#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.先基类后派生类 为什么这条规则不适用于这个程序(感觉非常“诡异”)???