64,662
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class cbasebase
{
public:
cbasebase() {cout << "cbasebase()" << endl;}
cbasebase(const string&) {cout << "cbasebase(const string &)" << endl;}
virtual ~cbasebase() {cout << "~cbasebase()" << endl;}
};
class cbase1: virtual public cbasebase
{
public:
cbase1(const string& s): cbasebase(s) {cout << "cbase1(const string&)" << endl;}
virtual ~cbase1() {cout << "~cbase1()" << endl;}
};
class cbase2: virtual public cbasebase
{
public:
cbase2(const string& s): cbasebase(s) {cout << "cbase2(const string&)" << endl;}
virtual ~cbase2() {cout << "~cbase2()" << endl;}
};
class cbase3
{
public:
cbase3() {cout << "cbase3()" << endl;}
virtual ~cbase3() {cout << "~cbase3()" << endl;}
};
class cderived: public cbase1, public cbase2, public cbase3
{
public:
cderived(const string& s): cbase1(s), cbase2(s) {cout << "cderived(const string&)" << endl;}
virtual ~cderived() {cout << "~cderived()" << endl;}
};
int main()
{
cderived a(string("hello world")); ///cbasebase<> 为何虚继承会调用无参构造函数?
///cbase1<const string&>
///cbase2<const string&>
///cbase3<>
///cderived<const string&>
///~cderived<>
///~cbase3<>
///~cbase2<>
///~cbase1<>
///~cbasebase<>
return 0;
}