社区讨论
发现了C++虚继承构造函数顺序中一个非常奇怪的问题,求大佬解答
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo8w33uo
- 此快照首次捕获于
- 2023/10/28 01:30 2 年前
- 此快照最后确认于
- 2023/10/28 01:30 2 年前
CPP
#include<iostream>
using namespace std;
class Writing {
public:
Writing() {
cout<<"Writing constructor"<<endl;
}
~Writing(){
cout<<"~Writing"<<endl;
}
};
class Racing {
public:
Racing(){
cout<<"Racing constructor"<<endl;
}
~Racing(){
cout<<"~Racing"<<endl;
}
};
class Weekend:virtual public Writing,virtual public Racing{
public:
Weekend(){
cout<<"Weekend constructor"<<endl;
}
~Weekend(){
cout<<"~Weekend"<<endl;
}
};
class Workday:virtual public Racing,virtual public Writing{
public:
Workday(){
cout<<"Workday constructor"<<endl;
}
~Workday(){
cout<<"~Workday"<<endl;
}
};
class Choseday:public Workday,virtual public Weekend{
public:
Choseday(){
cout<<"Choseday constructor"<<endl;
}
~Choseday(){
cout<<"~Choseday"<<endl;
}
};
int main(){
Choseday day;
return 0;
}
程序输出是:
Racing constructor
Writing constructor
Weekend constructor
Workday constructor
Choseday constructor
~Choseday
~Workday
~Weekend
~Writing
~Racing
但我的理解是先是Racing constructor再是Writing constructor
老师上课讲构造函数顺序是说:
1.先虚后实;2.先基类后派生类
为什么这条规则不适用于这个程序(感觉非常“诡异”)???
回复
共 0 条回复,欢迎继续交流。
正在加载回复...