avatar
ask a C++ inheritance question# Programming - 葵花宝典
e*r
1
class FooTooBar:virtual FooToo, virtual Bar{
public:
FooTooBar(){std::cout<};
只听说过public, protected, private的inheritance, 还有virtual的
inheritance吗?
谢谢
avatar
a*a
2
有啊. 看书没看仔细吧? 很早就有了. 虚拟继承解决的是祖先类的基类空间重复问题.

【在 e******r 的大作中提到】
: class FooTooBar:virtual FooToo, virtual Bar{
: public:
: FooTooBar(){std::cout<: };
: 只听说过public, protected, private的inheritance, 还有virtual的
: inheritance吗?
: 谢谢

avatar
e*r
3

那要不要在FooToo 和Bar定义的时候也加上virtual, 换句话说, 下面的是不是
每个inherutance都要加上virtual? 我试了一下, 好象virtual inheritance的个数决定下面的例子的结果.

#include
class Foo
{
public:
Foo(){std::cout<};
class Bar: Foo
{
public:
Bar(){std::cout<};
class FooToo:virtual Foo
{
public:
FooToo(){std::cout<};
class FooTooBar:virtual FooToo, virtual Bar{
public:
FooTooBar(){std::cout<};
int main()
{
FooTooBar a;
return 0;
}

【在 a**a 的大作中提到】
: 有啊. 看书没看仔细吧? 很早就有了. 虚拟继承解决的是祖先类的基类空间重复问题.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。