c++ - C++中虚拟公共(public)类的副作用

标签 c++ class virtual

Virtual Public Class用于一个类,保证一个类的一个对象只继承一个子对象。

class L { /* ... */ }; // indirect base class
class B1 : virtual public L { /* ... */ };
class B2 : virtual public L { /* ... */ };
class D : public B1, public B2 { /* ... */ }; // valid

当我们不将它用于单继承时,我们使用 virtual public 时会产生副作用吗?例如,是

class L { /* ... */ }; // indirect base class
class B1 : virtual public L { /* ... */ };
class D : public B1 { /* ... */ }; // valid

一样
class L { /* ... */ }; // indirect base class
class B1 : public L { /* ... */ };
class D : public B1 { /* ... */ }; // valid

?我的意思是,对于所有可能的情况,将父类设为虚拟是否安全?

最佳答案

“以防万一”将父类设为虚拟类同样安全。该标准没有指定如何实现虚拟继承,但可能会对性能造成轻微影响。除非您正在编写对性能至关重要的内容,否则您无需担心。

关于c++ - C++中虚拟公共(public)类的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240970/

相关文章:

c++ - 将 C 源代码转换为 C++

c++ - ldd 未找到 xerces 的共享对象 (.so)

c++ - Visual Studio 2012 中的单元测试 C++ 控制台应用程序

c# - 在 WPF 中,在项目中使用 Struct 或 Class 作为具有 MVVM 模式的模型?

class - 如何设计一个版本转换器(Json.net),在没有太多代码污点的情况下将非常旧的版本处理为新版本

c++ - 在这种情况下如何释放内存?

c++ - 可以在 C++ 中使用 dynamic_cast 进行向上转换和向下转换

c++ - C++ 程序中的虚拟表和虚拟指针的数量

c++ - C/C++ 衡量程序效率

hardware - 创建虚拟监视器(显示设备)