别怕Linux编程

Google C++编程规范 – 第二十五条 -《嵌套类》

本原创文章属于《Linux大棚》博客。

博客地址为http://roclinux.cn

文章作者为roc wu

==

【规范】

尽量不要将一个嵌套类声明为public,把嵌套类置于名字空间中是更好的方式。

【定义】

我们可以在一个类中定义另外一个类,后者称为前者的成员类,前者称为一个包围类,后者称为一个嵌套类。形如:

class Foo {

 private:
  // Bar就是一个成员类,它被定义在了Foo内部
  class Bar {
    ...
  };

};

【支持者的声音】

如果某个类只在另外一个类中被使用,那嵌套类的存在就是有意义的,因为嵌套类方式可以避免其作用范围扩大,从而“污染”到其所在类的外部。

而嵌套类的具体实现可以定义在.cc/.cpp文件中,因为嵌套类的定义是由具体实现来决定的。

【反对者的声音】

假如我们只能在嵌套类所在的包围类中对嵌套类进行前置声明的话,那么任何使用Foo:Bar*的头文件都必须包含Foo类的完整定义了。

【结论】

不要将一个嵌套类声明成public,除非它们真的是对外接口的一部分。

谢谢!

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *