面试题目!
class A {
public:
A(int x) {this->x = x; }
A() { this->x = 0; }
private:
int x;
};
class B1 : virtual public A {
public:
B1(int x):A(x){}
B1(){}
};
class C : public B1 {
public:
//C(int x):B1(x){} // B1(x) 不会被调用!最终只会去调用被虚拟继承的类A的默认构造函数A()
C(int x) :A(x) {}; // 直接调用被虚拟继承的类A的构造函数
};
//使用虚拟继承来做菱形继承时,类C对类B的构造函数调用不再起作用
//只能通过类C的构造函数中,直接指定调用类A的指定构造函数
//如果类C的构造函数,没有指定A的构造函数,就会导致调用类A的默认构造函数
int main(void) {
C c(100);
return 0;
}
@全体成员 用笔记记下来哦!