virtual-inheritance

virtual-inheritance

文章 0 浏览 3

异常需要虚拟继承吗?

我理解使用多重继承时虚拟继承的必要性——它解决了可怕的钻石问题。 但是如果我不使用多重继承怎么办? 是否需要虚拟继承? 我似乎记得听说过它对于…

将军与妓 2024-11-05 01:02:57 0 0

当调用非虚拟基方法时,C++ 中的虚拟继承是否有任何惩罚/成本?

当我们从基类调用常规函数成员时,在 C++ 中使用虚拟继承是否会在编译代码中产生运行时损失?示例代码: class A { public: void foo(void) {} } clas…

梦在深巷 2024-10-30 19:58:10 2 0

菱形多态继承:sizeof 最派生类

我知道菱形继承会导致歧义,可以通过通过虚拟基类使用继承来避免它,问题不在于它。问题是当类是多态时,菱形层次结构中最派生的类的大小。这是示例代…

手心的海 2024-10-28 21:29:21 2 0

您应该写“公共虚拟”吗?或“虚拟公众”在虚拟继承中?

基于 http://en.wikipedia.org/wiki/Virtual_inheritance class Animal { ... } // Two classes virtually inheriting Animal: class Mammal : public…

心作怪 2024-10-27 04:27:09 1 0

为什么需要在菱形层次结构的中间指定虚拟继承?

我有类的钻石层次结构: A / \ B C \ / D 为了避免 D 中存在 A 的两个副本,我们需要在 B 和 C 处使用虚拟继承。 class A { } class B: virtual publi…

究竟谁懂我的在乎 2024-10-19 15:43:47 3 0

虚拟继承的性能影响

我正在考虑在实时应用程序中使用虚拟继承。使用虚拟继承是否会对性能产生类似于调用虚拟函数的性能影响?有问题的对象只会在启动时创建,但我担心层次…

鲜肉鲜肉永远不皱 2024-10-15 15:34:37 2 0

什么时候虚拟继承是一个好的设计?

EDIT3:请务必在回答之前清楚地了解我要问的内容(有 EDIT2 和很多评论)。有(或曾经)有很多答案清楚地表明了对问题的误解(我知道这也是我的错,对…

孤城病女 2024-10-10 04:27:21 5 0

我应该几乎总是使用虚拟继承吗?

我从 虚拟继承不会破坏静态组合? 中看到,虚拟继承添加了 sizeof(pointer) 对象的内存占用。除此之外,默认情况下使用虚拟继承,仅在需要时才使用传…

习ぎ惯性依靠 2024-10-09 01:39:00 4 0

C++虚拟继承和类型转换/复制构造函数混淆

我有下面的代码: class A { } class B: public virtual A { public: B() { cerr &lt&lt "B()" } B(const A&amp a) { cerr &lt&lt "B(const A&amp)" }…

沙沙粒小 2024-09-24 11:49:58 5 0

调用虚拟基类的重载构造函数

有没有一种(实用的)方法可以绕过正常的(虚拟)构造函数调用顺序? 示例: class A { const int i public: A() : i(0) { cout &lt&lt "calling A()"…

溇涏 2024-09-14 05:33:04 7 0

基类列表是指示虚拟继承的正确位置吗?

我从未见过用作虚拟和非虚拟基类的类(即,如果某个类旨在成为祖先,那么我们通常会提前知道继承类型 - 虚拟或非虚拟)。 所以我认为 c++ 中有一个容…

温暖的光 2024-09-13 21:10:34 5 0

C++:继承同名的重载非虚拟方法和虚拟方法会导致问题

我试图将两个具有不同参数列表的同名方法继承到派生类。其中之一是虚拟的并在派生类中被重写,另一个是非虚​​拟的。这样做时,我在尝试从派生类对象…

残疾 2024-09-13 01:10:30 8 0

解决 C++ 中不明确的 this 指针

我正在尝试从旧类中派生出一个新类。基类声明如下所示: class Driver : public Plugin, public CmdObject { protected: Driver() public: static Dri…

一袭白衣梦中忆 2024-08-31 16:11:33 7 0

关于虚拟继承层次结构的问题

我在处理虚拟继承时遇到了这个问题。我记得在非虚拟继承层次结构中,子类的对象保存其直接超类的对象。那么虚拟继承呢?在这种情况下,子类的对象是直…

小忆控 2024-08-30 16:56:57 6 0

虚拟继承如何解决“钻石”问题(多重继承)歧义?

class A { public: void eat(){ cout&lt&lt"A"} } class B: virtual public A { public: void eat(){ cout&lt&lt"B"} } class C: virtual public A { …

挥剑断情 2024-08-29 02:42:57 12 0
更多

推荐作者

1CH1MKgiKxn9p

文章 0 评论 0

ゞ记忆︶ㄣ

文章 0 评论 0

JackDx

文章 0 评论 0

信远

文章 0 评论 0

yaoduoduo1995

文章 0 评论 0

霞映澄塘

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文