상속 2

다중 상속과 가상 상속

멤버 함수와 가상 함수의 동작 원리 객체가 생성되면 멤버 변수는 객체 내에 존재한다. 멤버 함수는 메모리의 한 공간에 별도로 위치하고 이 함수가 정의된 클래스의 모든 객체가 이를 공유하는 형태를 취한다. 한 개 이상의 가상 함수를 포함하는 클래스에 대해서는 컴파일러가 가상 함수 테이블을 만든다. 가상 함수 테이블은 객체의 생성과 상관없이 main 함수가 호출되기전 메모리 공간에 할당된다. 가상 함수 테이블은 호출되어야 할 함수의 위치정보를 담고 있는 테이블이다. class A { public: virtual void Func() { cout

C++에서 상속에 대해 정리

상속이란? 기존에 정의해 놓은 클래스의 재활용을 목적으로 만들어진 문법적 요소이다. class Base{}; class Derived : public Base{}; 상속받은 클래스(파생 클래스)의 생성자 정의 파생 클래스의 객체 생성 과정에서 기초 클래스의 생성자는 무조건 호출된다. 파생 클래스의 생성자는 기초 클래스의 멤버까지 초기화 할 의무가 있다. 파생 클래스의 생성자는 기초 클래스의 생성자를 호출해서 부모 클래스의 멤버를 초기화 하는 것이 좋다. 파생 클래스의 생성자에서 기초 클래스의 생성자 호출을 명시하지 않으면, 기초 클래스의 void 생성자가 호출된다. 접근 제한의 기준은 클래스이므로 상속받은 private 변수는 그 클래스의 public 함수를 통해서 간접적으로 접근을 해야한다. 파생 클래..