本原创文章属于《Linux大棚》博客。
博客地址为http://roclinux.cn。
文章作者为roc wu
==
【规范】
尽量不要将一个嵌套类声明为public,把嵌套类置于名字空间中是更好的方式。
【定义】
我们可以在一个类中定义另外一个类,后者称为前者的成员类,前者称为一个包围类,后者称为一个嵌套类。形如:
class Foo {
private:
// Bar就是一个成员类,它被定义在了Foo内部
class Bar {
...
};
};
【支持者的声音】
如果某个类只在另外一个类中被使用,那嵌套类的存在就是有意义的,因为嵌套类方式可以避免其作用范围扩大,从而“污染”到其所在类的外部。
而嵌套类的具体实现可以定义在.cc/.cpp文件中,因为嵌套类的定义是由具体实现来决定的。
【反对者的声音】
假如我们只能在嵌套类所在的包围类中对嵌套类进行前置声明的话,那么任何使用Foo:Bar*的头文件都必须包含Foo类的完整定义了。
【结论】
不要将一个嵌套类声明成public,除非它们真的是对外接口的一部分。
谢谢!