#include <iostream>
class Base
{
public:
Base()
{
std::cout<<"Base Constructor"<<std::endl;
}
~Base()
{
std::cout<<"Base Deconstructor"<<std::endl;
}
void SetBase_Varible(int i)
{
Base_Varible=i;
}
int GetBase_Varible()
{
return Base_Varible;
}
private:
int Base_Varible;
};
class DerivedOne:virtual public Base
{
public:
DerivedOne()
{
std::cout<<"DerivedOne Constructor"<<std::endl;
SetBase_Varible(1);
}
~DerivedOne()
{
std::cout<<"DerivedOne Deconstructor"<<std::endl;
}
};
class DerivedTwo:virtual public Base
{
public:
DerivedTwo()
{
std::cout<<"DerivedTwo Constructor"<<std::endl;
SetBase_Varible(2);
}
~DerivedTwo()
{
std::cout<<"DerivedTwo Deconstructor"<<std::endl;
}
};
class DerivedThree:public DerivedOne,DerivedTwo
{
public:
DerivedThree()
{
std::cout<<"DerivedThree Constructor"<<std::endl;
std::cout<<GetBase_Varible()<<std::endl;
}
~DerivedThree()
{
std::cout<<"DerivedThree Deconstructor"<<std::endl;
}
};
int main()
{
DerivedThree *x=new DerivedThree();
delete x;
std::system("PAUSE");
return 0;
}
C++多继承中二义性问题--虚基类
最新推荐文章于 2024-09-19 18:52:06 发布