728x90

프로그래밍 209

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-3. 연산자 오버로딩(2)

PART 2. 객체 지향 프로그래밍 - chapter 10. 프렌드와 연산자 중복 #pragma once #include using std::cout; using std::cin; using std::endl; // const char& operator []() const {} // char& operator [] () 두 함수는 별개의 함수가 된다. //재정의가 금지된 연산자 //1) 선택 연산자 : . //2) 포인터 선택 연산자 : .* //3) 영역 연산자 : :: //4) 조건 연산자 : ? : //5) 크기 연산자 : sizeof //재정의가 가능한 연산자는 다 적어두고 실제 구현은 생략했다. //리턴형이 정해진 것이 아니라면 다 point클래스를 반환하도록 했다. class point { p..

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..

사용할 수 있는 적절한 기본 생성자가 없습니다.

발생 이유 기본 생성자가 없는 클래스의 객체를 기본 생성자로 생성하려고 하면 발생. 해결방법 객체는 여러가지 경우에 생성되며 이 때 특별히 다른 생성자를 지정하지 않는다면 기본 생성자를 필요로 한다. 즉, 기본 생성자를 쓰지 않으면 귀찮은 방법을 사용해야 한다는 뜻이다. 기본생성자를 만들면 안되는 상황이라면 모르겠지만 그렇지 않다면 기본생성자를 만들어두는게 편하다.

에러 모음 2018.07.02

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..

반응형