C++对象属性与初始化规则

推荐使用初始化列表初始化

初始化列表我们不写,但是编译器依然会自动初始化一次

———》针对自定义类型

声明和定义,声明是告诉程序我要定义这个东西

定义是实际开辟空间,分配内存

初始化列表可以认为初始化列表是成员变量定义的地方。

必须放在初始化列表:

     常量,引用,没有初始化的

必须要显示的写出构造函数的情况:

     const类型的成员变量(还必须在初始化列表)、引用(引用必须在定 义的时候初始化)、没有缺省构造函数的自定义类型的成员变量

     成员变量按照声明的顺序初始化,而不是按照初始化列表顺序。

     const可以修饰函数,但是只能修饰成员函数。修饰的是this指针指向的对象。

const在*之前修饰的都是指针指向的内容

const在*之后修饰的都是指针变量本身

如果成员函数不修改成员变量,可以const修饰

如果要修改,不能使用const修饰<display 例子>

作用域只能被缩小,不能被放大


成员函数:

     取地址运算符的重载。99%都不需要自己定义,系统默认的就可以。


内联函数

     在调用的地方展开,不会有栈桢开销,是一种以空间换时间的做法,神去了函数调用的开销。

     代码很长或者/递归的函数都不适合展开。

     inline对于编译器而言只是一个建议,如果有递归或者循环,编译器会忽略inline

     定义在类里的成员函数会默认成为内联函数。一般而言(十几行二十几行都会被展开),和编译器有关。

宏函数也可以减少压栈开销,宏常量增强代码的可维护性。


友元函数

     突破类的封装限制。

猜你喜欢

转载自blog.csdn.net/qq_40425540/article/details/81226033