c++ - 内部类声明

标签 c++ class-design

Possible Duplicate:
Pros and cons of using nested C++ classes and enumerations?

考虑以下声明。

class A {
    public:
    class B{
    };
};

没什么特别的。

  • 但是这样做有什么好处呢?
  • 可能出于什么原因将一个类放入另一个类中?
  • 两个类之间没有继承优势。
  • 如果将 B 放入 A 内部以共享其私有(private)名称,则 A 对于 B 来说只是一个 namespace ,并且也有理由将 B 设为私有(private)。

你对此有何看法?

最佳答案

从概念上讲,它让程序员知道类 B 与类 A 特定相关。当您在类 A 之外使用类 B 时,必须使用类型 A::B,这会提醒您,每次, B 与 A 相关。这不会添加任何功能,但显示了一种关系。

同样,您根本不必使用继承/组合或类。您可以通过使用结构和函数或多或少地模拟 C 中的类。这只是一种保持代码更清晰、更简单的方法,让程序员更容易地将代码与设计联系起来。类比公共(public)子类更能完成此任务,但这只是一个示例。

如果它是一个私有(private)/ protected 子类(我认为它不在你的示例中),那么显然该类限制了该类及其子类的实现,这可能是需要的(同样是设计方面的)如果该类的唯一用例是该类(可能还有它的子类)的实现。

关于c++ - 内部类声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246537/

相关文章:

java - java中是否可以将变量的值从一个类移动到另一个类而无需继承?

c++ - 关于何时在 C++ 类中显式启用/禁用复制的指南?

editor - 类(class)设计师

java - 通过不同类传递值的最佳设计模式

c++ - 为一个模板类提供多个模型以供选择

c++ - C++中的多重继承困境

c++ - 模板类中模板函数的相同类型

c++ - 高效的 SSE NxN 矩阵乘法

design-patterns - 将算法封装到一个类中

c++ - 为什么要在这段代码中使用 void 指针?