728x90

cpp 43

Cpp 클래스 기본

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. point.h #pragma once #include class Point { private: int x, y; public: void SetPosition(int _x, int _y); void Move(int _x, int _y); void Show(void); Point(); ~Point(); }; point.cpp #include "Point.h" void Point::SetPosition(int _x, int _y) { x = _x; y = _y; } void Point::Move(int _x, int _y) { x += _x; y += _y; } void Point::Show(void) { s..

Cpp 구조체 예제 (2) (비트필드 구조체)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include using namespace std; struct PERSON { intage; longss; floatweight; charname[25]; } family_member; struct CELL {//비트필드 구조체 unsigned short character : 8;// 00000000 ???????? unsigned short foreground : 3;// 00000??? 00000000 unsigned short intensity : 1;// 0000?000 00000000 unsigned short background : 3;// 0???0000 00000000 unsigned ..

Cpp 구조체 예제(1)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include using namespace std; #define cpp #ifdef C //C스타일 struct Point { int x, y; }; //전역 함수로 처리함 void SetPosition(Point *pPoint, int _x, int _y) { pPoint->x = _x; pPoint->y = _y; } void Move(Point *pPoint, int _x, int _y) { pPoint->x += _x; pPoint->y += _y; } void Show(const Point *pPoint) { printf("(%d,%d)\n", pPoint->x, pPoint->y); } i..

10-2. 연산자 오버로딩 (1)

PART 2. 객체 지향 프로그래밍 - chapter 10. 프렌드와 연산자 중복 Ⅰ 연산자 중복 기본사항 1. C++의 연산자는 각 기본형들에 대해 동작이 미리 정의된 함수라고 볼 수 있다 .2. 클래스는 또한 사용자 정의형이므로 연산자를 이용한 연산이 가능하면 좋을 것이다.3. 이를 위한 메커니즘이 연산자 오버로딩이다. 4. 다만 새로운 연산자를 만드는 것은 허용되지 않는다.5. 기본형에 대한 연산을 재정의하는 것은 허용되지 않는다.6. 연산자들의 우선순위나 결합 법칙은 변경되지 않는다.7. 단항 연산자를 이항 연산자로 재정의하거나, 이항연산자를 단항연산자로 만들 수는 없다.8. .(멤버 선택 연산자), .*(멤버 포인터 선택 연산자), ::(범위 확인 연산자), ?:(조건 연산자)는 중복정의가 불가..

10-1. 프렌드 키워드

PART 2. 객체 지향 프로그래밍 - chapter 10. 프렌드와 연산자 중복 1. friend 키워드 - 기본적으로 private로 선언된 멤버들은 외부에서 접근할 수 없다. 심지어는 상속받은 클래스도 부모의 private 멤버들에는 접근할 수 없다. - friend 키워드는 선언한 쪽의 private 멤버를 외부에서 접근할 수 있도록 허용한다는 의미이다. - friend 지정은 단방향으로 명시적으로 지정한 대상에만 적용된다. - friend 지정은 전이되지 않으며 friend의 friend는 인정되지 않는다. - friend 지정은 상속되지 않는다. - friend 지정은 클래스 내에서만 할 수 있고, 다른 클래스, 다른 클래스의 멤버 함수, 전역 함수에 할 수 있다. Header.h #pragm..

9. 다형성

PART 2. 객체 지향 프로그래밍 - chapter 9. 다형성 1. 다형성(Polymorphism)이란? - 다형성은 객체들의 타입이 다르면 똑같은 메시지가 전달되더라도 서로 다른 동작을 하는 것을 말한다. - 메시지를 보내는 측에서는 객체가 어떤 타입인지 알 필요가 없어야 한다. - 다형성은 객체 포인터나 객체 참조자를 통하여 이루어진다. - 객체 포인터도 기본적으로 타입이 맞는 객체만을 가리킬 수 있지만, 부모 클래스 포인터는 자식 클래스 객체를 가리킬 수 있다. - 이를 상향 형변환이라고 한다. - 상향 형변환을 하면 상속 받은 부분만을 사용할 수 있고 나머지는 사용할 수 없다. 즉 참조할 수 있는 영역의 크기가 축소된다. - 반대로 부모 클래스를 가리키는 포인터가 자식 클래스를 가리키도록 형변..

8. 상속

PART 2. 객체 지향 프로그래밍 - chapter 8. 상속 1. 상속(Inheritance) - 기존에 존재하는 유사한 클래스로부터 속성과 동작을 이어받고 자신에게 필요한 기능을 추가하는 기법 - 자식 클래스가 이미 존재하는 부모클래스로부터 멤버들을 물려받는 것. class ChildClass : /*접근지정자(public, protected, private)*/ ParentClass { ... //추가된 멤버 변수나 멤버 함수 } - 자식 클래스는 항상 부모 클래스를 포함한다. - 부모 클래스(Parent Class) == 슈퍼 클래스(Super Class) == 베이스 클래스(Base Class) - 자식 클래스(Child Class) == 서브 클래스(Sub Class) == 파생된 클래스(D..

7. 클래스의 활용

PART 2. 객체 지향 프로그래밍 - chapter 7. 클래스의 활용 1. 객체 포인터 (Object Pointer) - 객체도 일반 변수처럼 정적 메모리 할당이나 동적 메모리 할당을 할 수 있다. - 정적 생성된 객체에 접근할 때는 .(dot) 연산자를 사용하고, 동적 생성된 객체에 접근할 때는 ->(Arrow)연산자를 사용한다. 2. this 포인터 (this Pointer) - 자기 자신을 가리키는 객체 포인터. - this는 C++의 예약어이므로 식별자로 사용할 수 없으며, 따로 선언하지 않아도 자동으로 생성된다. - 멤버 변수의 이름과 멤버 함수의 매개 변수의 이름이 동일한 경우 멤버 변수의 이름 앞에 'this->'를 붙여야한다. - 그 외에는 함수의 매개변수나 반환값으로 자기자신을 사용할..

6. 생성자와 소멸자

PART 2. 객체 지향 프로그래밍 - chapter 6. 생성자와 소멸자 1. 생성자(Constructor) - 생성자는 객체가 생성될 때 자동으로 호출되어 객체를 초기화하는 역할을 한다. - 생성자는 클래스와 이름이 같고, 반환값이 없는 함수이다. 매개변수는 받으니 여러개의 생성자를 중복 정의할 수 있다. - 생성자가 호출되지 않으면 객체 생성도 안되므로 특수한 경우를 제외하고 생성자는 public으로 선언되어 있어야 한다. - 생성자를 명시적으로 작성하지 않았다면 자동으로 디폴트 생성자가 추가되며, 객체가 생성될 때 디폴트 생성자가 호출된다. - 자동으로 추가된 디폴트 생성자는 매개변수도 없고, 함수 본문도 없으므로 아무일도 하지 않는다. - 다른 생성자를 추가하면 디폴트 생성자는 자동으로 추가되지..

반응형