Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有:
class A { public: class B { }; };
除了必须在第一个选项中使用 A::B 之外,该公共嵌套类与在其自己的 cpp 文件中定义的常规 B 类之间是否有任何区别?
本质上没有区别,只是它A::B是 的成员,因此具有对任何其他成员A的私有成员的所有访问权限。A
A::B
A
除了“B”的范围规则之外没有任何区别。使用“B”的客户必须用“A::”限定其范围。当您想要转发引用它时,嵌套“B”有时可能会出现问题,因为 C++ 编译器通常不允许您转发引用类中的类(它确实允许您转发引用命名空间中的类)。