C++面向对象设计一个类需要注意的事情

简介: C++代码千千万万,好的代码风格会让我们代码编写变得简洁高效,还会避免很多bug的出现,本期将讨论一个好的代码风格应该是怎样的。

1.构造函数最好写initializationlist。

解释:写到构造函数体里与initializationlist的区别在于一个前者是先定义在进行(拷贝)赋值。后者是在定义点直接进行初始化。对于普通变量汇编指令都是一样的(代码其实不一样(我觉得这里是编译器进行了优化))和类对象它做的处理是不一样的。对类对象来讲,如果是构造函数体里初始化,相当于先定义调用构造函数,然后赋值,调用拷贝赋值函数;如果是initializationlist相当于只调用了拷贝构造函数。很明显后者开销小于前者。还有一些成员变量的初始化如成员对象只能写到initializationlist里。


2.函数该加const要加。

解释:常对象无法调用非const成员函数,有更改数据的风险。


3.参数的传递尽量pass by reference,加不加const要考虑。

解释:传引用相当于传一个指针的大小,能减少时间上的开销。加不加const?不想改实参值加,否则不加。


4.返回值的return时候尽量return by reference,局部变量不能return by reference。

解释:传引用相当于传一个指针的大小,能减少时间上的开销。但是如果返回一个局部变量的reference,函数调用结束,局部变量消亡,引用一个消亡的变量,所以肯定是不可以的。


5.数据绝大多数private,函数大部分public。

解释:对于大多数情况下,不想让外界知道我私有的内容,设置为private,但是需要提供公有的接口设置成public。为什么这里说一般?假设单例模式,构造函数都是private了,所以我说一般。


6.成员变量尽量以variable_;来命名。

解释:成员变量一般加_来区分,因为系统定义的一些变量都把_放前面,所以为了避免命名冲突,我们选择放后面。


相关文章
|
19天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
21 4
|
19天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
18 4
|
18天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1
|
28天前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
28天前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
30天前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
51 1
|
20天前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
15 0
|
24天前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
28天前
|
存储 编译器 C语言
【C++类和对象(上)】—— 我与C++的不解之缘(三)
【C++类和对象(上)】—— 我与C++的不解之缘(三)
|
30天前
|
C语言 C++
C++番外篇——string类的实现
C++番外篇——string类的实现
19 0