본문 바로가기

상속4

객체 포인터 객체 포인터, 간단하게 보면 class를 가르키는 포인터로 볼 수 있겠지만, 이거, 생각보다 재밋으면서도 어렵다. 일단 따로 보자. int n; int* pn = &n;​ int n을 만들고, 포인터 pn이 가르킨다. (n의 값이 쓰레기인건 신경쓰지 말자) 그렇다면 여기서, 의문을 가져 보자. char* c = (char*)new int; int* n = (int*)new char; delete c; delete n;​ 어떻게 될까? 컴파일에서 문제도 일어 나지 않고, 실행도 된다. 여기서 파악해야 할 것은, 메모리의 크기이다. char* c 은 1바이트 int* n은 4바이트를 가르키게 되는데, 저런식으로 하게 되면 c는 new int의 1바이트 부분만 가르키게 되고, n은 새로 생성된 1바이트를 넘쳐.. 2010. 3. 29.
상속의 객체 생성, 소멸 과정 상속의 객체 생성과 소멸 과정에 대해서 알아보자. 가장 중요한 것은 Inher_A 클래스를 상속 받은, Inher_B 클래스를 생성할때, A클래스의 생성자를 먼저 들린 후, B클래스의 생성자를 수행한다는 것이다. 일단 소스를 보자. #include class Inher_A { public: Inher_A() { std::cout 2010. 3. 26.
상속의 개념 앞에서 protected설명을 하면서 상속을 다루었기 때문에 순서가 바뀐거 같긴 하지만, 상속에 대해서 살펴 보자. 상속은 이전 클래스가 가지고 있던, 멤버 변수, 멤버 함수를 다른 클래스에서 그대로 쓰거나, 수정, 추가 하기 위해서 사용한다. 일단 상속의 깊은 개념은 천천히 살펴 보고, 어떤 식으로 선언하고 사용하는지만 확인. #include class AAA { public: int A_a; void ShowA_a() { std::cout 2010. 3. 24.
public: private: 그리고 protected: public: 클래스 내부, 외부에서 모두 사용가능.(다른 클래스가 접근 가능) private: 클래스 내부 에서만 사용가능, 외부에서는 불가능.(다른 클래스가 접근 불가능) protected: 클래스 내부에서 사용가능, 외부에서 사용 불가능.(상속을 받은 다른 클래스가 접근 가능) 쉽게 표현하면 이와 같고. public: private:에 대해서는 이미 앞에서도 많이 다루었으니 protected:에 대해서만 한번 훑어 보자. 2010. 3. 24.