#include <iostream>
#include "case1.h"
#include "case2.h"
#include "case3.h"
 
using namespace std;
 
 
// 다중상속은 정말 필요하지 않으면 사용하지 말자
int main()
{
    case1::Derived d1;
 
    // 어떤 부모의 것을 호출해야할지 모호하다
    //d.foo();
    //d.m;
 
    d1.BaseA::foo();
    d1.BaseA::m;
    d1.BaseB::foo();
    d1.BaseB::m;
 
    cout << endl;
    case2::Derived d2; // Base 생성자 두 번 호출
 
    // BaseA 부모의 m인지 BaseB 부모의 m인지 모호하다
    //d1.m = 10;
 
    cout << d2.BaseA::m << endl;
    cout << d2.BaseB::m << endl;
 
 
    cout << endl;
    case3::Derived d3;
 
    // Base가 한 개만 만들어지기 때문에 모호하지 않다
    cout << d3.m << endl;
}
cs

'::public > C++' 카테고리의 다른 글

static_cast  (0) 2020.12.11
형 변환 규칙  (0) 2020.12.11
private, protected 상속  (0) 2020.11.27
추상 클래스, 순수 가상 함수  (0) 2020.11.27
정적 결합, 동적 결합  (0) 2020.11.27

+ Recent posts