生命周期、初始化、const
1.面向对象得几点编码规范
1>循环里面要少用判断
2>类与类之间的常用关系:组合(一部分),继承(一种)。
3>尽量将成员变量的初始化卸载初始化列表之中。
4>初始化列表中只是规定了初始化的方式,没用规定初始化的顺序,初始化的顺序跟定义的顺序有关.
2.在有关对象生命周期的几点问题。
1> 对象按引用来进行传递。
2> 函数返回对象的时候尽量返回临时对象,不要先定义再返回。
3> 调用返回对象的函数时,应该以初始化的方式调用,不要以赋值的方式调用。
4> Test t4 =Test(11,11)等价于Test t4(11,11).
5> Test(val)和(Test)val没有区别。
6>t2=60 和t2=(Test)60一样,一个隐式生成临时对象,一个显式生成临时对象。
7> 不能让指针指向临时对象,临时对象会被析构。可以引用临时对象,即给临时对象取别名,临时对象的生命周期就会变得和引用对象一样。
3.初始化的几点问题。
1> new数组对象,只能进行默认的初始化方式.
2>对于内置类型new int2初始化为0,new int[2]初始化为随机值。
对于自定义类型,这两种没有区别。
4.c++其实把一切类型都当作对象来处理。
5.const关键字
在C语言中:
1> const定义的变量,可以初始化,也可以不进行初始化。
2>const修饰的变量不能作为左值。
3>不能当常量来使用,可以认为式常变量。
4>常变量的编译方式和常量一模一样。
在c++中:
1> const定义的变量,必须进行初始化。
2>可以当作常量来使用。
3>常量const的编译方式,在编译时期拿常量的值直接将常量的名字替换掉。
4> 常量也会退化成常变量。
6.在出现const的代码段中,一般出现问题主要原因有:
1> 作为左值了。
2> 把const的地址或者引用泄漏出去了。
7.const的几个转换公式。
1>const int* => int* err
2>int * => const int* ok
3>int ** => const int** err
4>const int** => int** err
5>int** => int const err
6>intconst => int** err
7>const int** => int const err