e******r 发帖数: 220 | 1 class FooTooBar:virtual FooToo, virtual Bar{
public:
FooTooBar(){std::cout<<"FooTooBar";}
};
只听说过public, protected, private的inheritance, 还有virtual的
inheritance吗?
谢谢 | a**a 发帖数: 416 | 2 有啊. 看书没看仔细吧? 很早就有了. 虚拟继承解决的是祖先类的基类空间重复问题.
【在 e******r 的大作中提到】 : class FooTooBar:virtual FooToo, virtual Bar{ : public: : FooTooBar(){std::cout<<"FooTooBar";} : }; : 只听说过public, protected, private的inheritance, 还有virtual的 : inheritance吗? : 谢谢
| e******r 发帖数: 220 | 3
那要不要在FooToo 和Bar定义的时候也加上virtual, 换句话说, 下面的是不是
每个inherutance都要加上virtual? 我试了一下, 好象virtual inheritance的个数决定下面的例子的结果.
#include
class Foo
{
public:
Foo(){std::cout<<"Foo";}
};
class Bar: Foo
{
public:
Bar(){std::cout<<"Bar";}
};
class FooToo:virtual Foo
{
public:
FooToo(){std::cout<<"FooToo";}
};
class FooTooBar:virtual FooToo, virtual Bar{
public:
FooTooBar(){std::cout<<"FooTooBar";}
};
int main()
{
FooTooBar a;
return 0;
}
【在 a**a 的大作中提到】 : 有啊. 看书没看仔细吧? 很早就有了. 虚拟继承解决的是祖先类的基类空间重复问题.
|
|