【发布时间】:2012-05-19 03:34:32
【问题描述】:
可能重复:
In C++, what is a virtual base class?
virtual inheritance
为什么要从大多数派生类调用虚拟基类的构造函数...在继承层次结构中首先创建虚拟基类的对象...这背后的逻辑是什么?
我知道在使用虚拟继承的菱形结构中使用虚拟继承只会创建最基类的一个副本,但虚拟在线性继承中究竟做了什么。
class A{};
class B : virtual public A {};
class C : virtual public B {};
使用这种继承实际上我们试图达到什么目的?
还有什么是虚拟继承的对象布局?
有人能解释一下 C++ 中这种行为背后的逻辑吗?
【问题讨论】:
-
这是你的第 12 个问题,到现在为止你应该知道如何在问题中使用正确的格式。
-
问题不清楚。你问为什么先调用A的构造函数?
-
您基本上是在寻求有关虚拟继承的教程。这在许多其他问题和几个在线教程中都有涉及。 SO 不是您的 Google。
-
Kunal:我没有给你投反对票,但我敢猜测你为什么在这里被投反对票。 1)这里的问题太多了。 2)这看起来像一个意识流和Stack Overflow is not your personal research assistant,3)你正在使用虚拟继承并问为什么要使用虚拟继承。如果你不知道,他们为什么要使用它? (与 #2 基本相同) 4) 您没有努力正确地格式化您的问题 - 其他用户不得不反复编辑您的帖子以使其易于阅读。
-
@penelope:人们总是为他做事,他为什么要打扰?
标签: c++ inheritance virtual