티스토리 뷰

다이아몬드 상속문제를 해결 할 수 있는 가상 기본 클래스에 대해 알아보도록 하자.

 

이런식의 상속 문제 발생 가능

 

만일 저상황이 발생할시 B1, B2에다가 부모 클래스를 상속 시킬때 virtual을 붙혀주고

 

 C에다가 A의 생성자를 별도로 호출 해주면 된다.

 

C(int a, int b, int c)
	: B1(b), B2(c), A(a)
{}

 

 

//

 

int main()
{
	Base b;
	Derived d;
	
    //std::vector<Base*> my_vec와 똑같이 작동한다.
	std::vector<std::reference_wrapper<Base>> my_vec;
	my_vec.push_back(b);
	my_vec.push_back(d);
	
	for(auto & ele : my_vec)
		ele.get().print();
	
	return 0;
}

// I'm Base
// I'm Derived
// ~Derived
// ~Base
// ~Base
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함