1.总体来说,C++的类分为两大类,基于对象(object based)、面向对象(object oriented),区别是前者单一类,后者包含多种类(继承、组合、指派等)
2.类声明文件(.h)写上预编译语句,防止重复声明
有些IDE在.h文件时自带了这些语句,如CodeBlocks
#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED
#endif // COMPLEX_H_INCLUDED
3.构造函数尽量使用函数参数列表初始化,效率比赋值效率高
参数列表初始化:
Complex(double r = 0, double i = 0):re(r), im(i){}
普通赋值初始化:
Complex(double r = 0, double i = 0)
{
re = r;
im = i;
}
4.inline函数,通常函数体简单,但是是不是inline要看编译器,并不是写上inline实际就是inline,在类内直接定义的函数隐式inline,但是还是要看编译器,inline函数在类定义文件(.h)内一同定义
5.函数参数、返回值尽可能pass by reference(to const)而不要 pass by value,原因在传值会把变量整个拷贝到函数栈,耗时耗内存,引用在根本上是传地址,看上去是变量的别名,另外在确定函数不会更改变量值的情况下,加上const
6.明确函数会不会更改私有数据,如果不会,请务必写上const,防止今后定义const对象时,调用接口函数失败
double real() const { return re; }
double imag() const { return im; }
7.相同class的各个object互为友元
8.函数内部定义的局部变量不能作为引用返回,因为在函数结束之后局部变量的内存被释放,对其引用会相当于引用一个不存在的对象,会报错,除了这种情况外,尽量返回引用类型
9.重载某些特殊类型运算符,如"<<",函数返回类型不能为空,考虑到用户连续操作,否则只能一次操作预定的对象数目,且不能设计为成员函数类