是否建议让所有类都从 C++ 中的基类继承?

Posted

技术标签:

【中文标题】是否建议让所有类都从 C++ 中的基类继承?【英文标题】:Is it recommended to make all classes inherit from a base class in c++? 【发布时间】:2021-09-25 21:26:29 【问题描述】:

我想知道是否应该让我的所有类都继承自一个基类,以便能够应用类似(垃圾收集机制)之类的东西

【问题讨论】:

如果您确实需要共享所有权,请查看 shared_ptr,而不是继承。 这当然不合常规。 如果没有强烈的设计动机,不要这样做,即使你有,也要考虑替代方法,因为那将是一个非常具有侵略性的选择。我已经看到它在 VCL、Qt 等 GUI 框架中做了很多工作...... @MatG> 你会在 90 年代或 2000 年代初期创建的框架和库中看到很多。那时 OO 是一件大事(Java 也来自那个时候)。 没有。 (此空间特意留空) 【参考方案1】:

C++ 不是 Java。

您不使用 GC 引用,而是使用实际对象。 您不会在堆上分配所有内容。 如果你不需要,你没有复杂的继承关系。 不要将所有方法都设为虚拟,以防万一它们被覆盖。 名单还在继续,但我想你明白了。

【讨论】:

【参考方案2】:

选择 C++ 而不是其他语言的原因是它可以让您对程序的功能进行细粒度的控制。如果您愿意使用垃圾收集,听起来您愿意放弃它,此时使用 C# 之类的东西编写程序可能更有意义。顺便说一句,这会自动使您的所有类都从基类继承,即System.Object

(如果您正在想要进行垃圾收集,但出于其他原因需要使用 C++,我们可能需要更多关于您正在做什么的详细信息以便为您提供最佳方法的建议。)

【讨论】:

以上是关于是否建议让所有类都从 C++ 中的基类继承?的主要内容,如果未能解决你的问题,请参考以下文章

我应该为我的基类使用实体框架上的啥继承策略?

详解C++中基类与派生类的转换以及虚基类

11).C#_所有类都派生自object类

C++中子类从基类都继承啥?

继承中的基类是不是复制到派生类?

继承和动态规划的危险