gpt4 book ai didi

c++ - 你能继承同一个类两次吗?

转载 作者:可可西里 更新时间:2023-11-01 18:26:32 25 4
gpt4 key购买 nike

你能继承同一个类两次吗?例如。 :

class Base {

};

class Foo : public Base {

};

class Bar : public Base {

};

class Baz : public Foo, public Bar {
//is this legal?
// are there restrictions on Base
// (e.g. only virtual methods or a virtual base)?

};

最佳答案

是的,它是合法的,而且 Base 没有任何限制。

然而,您应该意识到这会导致 Baz 中存在两个类型为 Base 的不同对象,这将要求您使用限定名称来告诉 C++ 是哪个版本的Base 你的意思是,当你试图访问它的成员时。

C++ 提供了一种称为 virtual inheritance 的机制解决这个问题(如果这对你来说是个问题):

class Base { };

class Foo : public virtual Base { };

class Bar : public virtual Base { };

class Baz : public Foo, public Bar { };

这将在 Baz 中的 FooBar 对象之间共享 Base 对象

关于c++ - 你能继承同一个类两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com