推荐使用初始化列表初始化
初始化列表我们不写,但是编译器依然会自动初始化一次
———》针对自定义类型
声明和定义,声明是告诉程序我要定义这个东西
定义是实际开辟空间,分配内存
初始化列表可以认为初始化列表是成员变量定义的地方。
必须放在初始化列表:
常量,引用,没有初始化的
必须要显示的写出构造函数的情况:
const类型的成员变量(还必须在初始化列表)、引用(引用必须在定 义的时候初始化)、没有缺省构造函数的自定义类型的成员变量
成员变量按照声明的顺序初始化,而不是按照初始化列表顺序。
const可以修饰函数,但是只能修饰成员函数。修饰的是this指针指向的对象。
const在*之前修饰的都是指针指向的内容
const在*之后修饰的都是指针变量本身
如果成员函数不修改成员变量,可以const修饰
如果要修改,不能使用const修饰<display 例子>
作用域只能被缩小,不能被放大
成员函数:
取地址运算符的重载。99%都不需要自己定义,系统默认的就可以。
内联函数
在调用的地方展开,不会有栈桢开销,是一种以空间换时间的做法,神去了函数调用的开销。
代码很长或者/递归的函数都不适合展开。
inline对于编译器而言只是一个建议,如果有递归或者循环,编译器会忽略inline
定义在类里的成员函数会默认成为内联函数。一般而言(十几行二十几行都会被展开),和编译器有关。
宏函数也可以减少压栈开销,宏常量增强代码的可维护性。
友元函数
突破类的封装限制。