别怕Linux编程

Google C++编程规范 – 第三十七条 -《接口》

本原创文章属于《Linux大棚》博客。
博客地址为http://roclinux.cn
文章作者为roc wu
==
【规范】
我们对满足了一些特定条件的类,称之为接口类,接口类建议但不强制以Interface作为后缀。
【定义】
满足如下条件的类,我们称之为纯接口类:

  1. 仅有纯虚函数(public pure virtual)和静态函数(static method)
  2. 不存在非静态数据成员
  3. 不必定义构造函数。如果有的话,则必须是protected,且不接受任何参数。
  4. 如果本身是一个子类,那么其父类也要满足上述条件并以Interface作为后缀。

我们永远无法直接实例化一个接口类,这是因为接口类中包含了纯虚函数。为了确保所有的接口实现都可以被正确的销毁,接口类中也要声明一个虚析构函数,此析构函数不能是纯虚函数(这和上面所列的第1个条件相左,这算是一个例外)。
【支持者的声音】
以Interface作为后缀来标记一个类,可以很清晰的让人们知道不要在这个类中增加具体的实现方法和非静态数据成员。这在多重继承中格外重要。
而对于Java开发者来说,接口的概念是非常熟悉的。
【反对者的声音】
以Interface作为后缀,会让类名显得很长,使得人们更难阅读和理解。而且接口中的具体实现不应该暴露给使用它的用户。
【结论】
只有满足上面4个条件的类,才需以Interface结尾。相反,满足上述条件的类也不一定就以Interface结尾。
谢谢!