读google的C++编码规范类部分小结

正在看<google的C++编码规范>,对于类部分写个小结,记录一下:

1.构造函数只进行那些没有实际数据意义的初始化,需要做实际数据的初始化时,使用Init()函数来集中初始化

2.类存在成员变量时,如果没有构造函数,自己定义一个默认构造函数,不要使用编译器自动生成的构造函数

    优点:默认将结构体初始化为"不可能"的值,使调试更加容易

3.对单参数构造函数使用C++关键字explicit

    优点:避免不可时宜的转换

4.仅在需要拷贝一个类对象时定义拷贝构造函数,不需要拷贝时应使用DISALLOW_COPY_AND_ASSIG.

    为了避免编译器自动生成的拷贝构造函数,可以定义一个private的空拷贝构造函数

5.当只有数据时,使用struct,其他时候使用class

6.使用组合通常比继承更合适,如果要使用继承,只适用公共继承.努力做到只有在"is-a"的情况下使用继承,其他"has-a"的情况下使用组合.

    如果该类中有虚函数,则令析构函数为virtual

    限定仅在子类访问的成员函数为protect,另外数据成员应始终为私有

    在中定义派生的虚函数时,需要明确声明该函数为virtual(为了良好的代码可读性)

7.只有当最多只有一个基类中含有实现,其他基类都是以interface为后缀的纯接口类时才会使用多重继承

8.接口类需要满足:

    1).只有纯虚函数和静态函数(以及虚析构函数)

    2).没有非静态数据成员

    3).没有定义任何构造函数,如果有,则为protected且无参数的构造函数

    4).如果该interface类是子类,也只能继承满足相同条件的父类

9.基本不使用重载操作符

    极少数情况需要和模板或"标准C++类"连接时的使用方法,具体见原文档

10.将数据成员私有化,并提供相关存取函数,

    如:定义变量foo_();取值foo();赋值set_foo();一般可使用内联函数

11.声明次序:public在private之前,成员函数在成员变量之前

    定义次序:public,protected,private

    每一块的声明次序:1)typedef和enums,2)常量,3)构造函数,4)析构函数,5)成员函数(含静态成员),6)数据成员(含静态数据成员)

12.编写短小,凝练,功能单一的函数

原文档也有小结,中文文档地址

 

原文链接: https://www.cnblogs.com/qooweds/archive/2013/04/17/4032860.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    读google的C++编码规范类部分小结

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85027

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午9:50
下一篇 2023年2月9日 下午9:50

相关推荐