gpt4 book ai didi

C++ virtual Diamond 继承

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:42 25 4
gpt4 key购买 nike

<分区>

假设我们有一个菱形继承,其中 D 从 B1 和 B2 继承,其基数为 V,如下所示:

struct V { 
V(){cout << "V()" << endl;}
V(int){cout << "V(int)" << endl;}
};
struct B1 : virtual V {
B1(){cout << "B1()" << endl;}
B1(int i): V(i) {cout << "B1(int)" << endl;
/*…*/ }
};
struct B2 : virtual V {
B2(){cout << "B2()" << endl;}
B2(int i) { cout << "B2()" << endl; }
};
struct D : B1, B2 {
D(int i): V(i) { cout << "D(int)" << endl; }
};

当我初始化 D* 参数时,我希望 B1 和 B2 默认构造函数调用 V 构造函数。但是,当我运行下一行时,V 被调用了一次。为什么?

D* d = new D(1);

提前致谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com