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

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

【问题讨论】:

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

标签: c++ oop inheritance design-patterns


【解决方案1】:

C++ 不是 Java。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-02
      • 2011-02-21
      • 2011-08-28
      • 2020-10-09
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多