- 构造函数被放在private
表示这个构造函数不可以被外界调用,即不允许被外界创建对象
比如单例模式就是这种写法,构造函数只能被特定函数 getInstance调用
- 常量成员函数
在成员函数的后面加const,即为常量成员函数,它不会改变数据的内容
我们在设计成员函数的时候,如果不改变数据内容,就一定要加const
下面第二个例子中 const complex c1(2,1); 表示 对象中的参数不可以改变
而如果c成员函数不加const,表示可能会改data,则编译器无法通过
- 参数传递:值传递和引用传递
养成习惯,尽量不要pass by value,而要用pass by reference,传引用
引用在底层就是一个指针,所以传引用和传指针一样快
如果传引用只是为了速度,而不需要修改数据,则可以加const
如 complex& operator += (const complex&); 不可以修改参数complex的内容
- 返回值和返回引用
如果可以的话,返回值的传递也要尽量by reference
- 友元
在友元中,可以自由取得friend的private成员,而不需要通过成员函数来拿数据
- 相同类的各个对象互为友元
以上代码中,func函数的param参数可以直接取得私有成员变量,而不用通过
友元,因为相同类的各个对象互为友元
- 函数体外的各种定义
一个好的类设计,需要注意以下几点
1)数据一定要在private当中
2)参数尽可能的用reference传递,加不加const看情况
3)返回值尽可能用reference传递
4)类的成员函数,应该加const就要加
5)构造函数尽量用列表初始化
函数不可以返回引用的情况
如果返回值时函数中的局部变量,则不能返回引用,因为函数结束后,局部变量会销毁
除了这种情况,函数返回值都可以传引用