프로그래밍언어/C++

다중 상속 (multiple inheritance), 다이아몬드 상속

nakka 2017. 3. 27. 19:17
728x90

다중 상속 (multiple inheritance)


struct A

{

int a;

};

struct B

{

int a;

int b;

};

struct C : public A, public B

{

int a;

int b;

int c;

};


int main()

{

C ccc;


ccc.a = 10;  // error

ccc.A::a = 10;  // ok

ccc.B::a = 10;

}





다이아몬드 상속


struct X

{

int x;

};

struct A : virtual public X  // 가상상속, x 가 메모리 영역에 두번 들어 가지 앟고 한번만 들어 감

{

int a;

};

struct B : virtual public X  // 가상상속, x 가 메모리 영역에 두번 들어 가지 앟고 한번만 들어 감

{

int b;

};

struct C : public A, public B

{

int c;

};


int main()

{

C ccc;

}



728x90