More effective C++之基础议题(chapter1)

大纲:
1、指针和引用
2、类型转换
3、数组与多态的不可混用
4、默认构造函数
指针和引用
相同点:
间接地来使用对象
异同点:
指针可以指向空对象
引用必须指向非空对象,要求做初始化
可以改变指针指向,不可改变引用指向
抉择:
重载运算符、必须指向非空对象、不想改变其指向,使用引用;实际上,大多数的场景,我们需要改变指向,相对而言,指针可能适用的场景更多。
此外,关于使用指针、引用的效率问题:
由于引用不可指向空对象,因此可以免去测试指针为空步骤,所以使用引用的代码效率更高。

2、类型转换符
static_cast(expression)
const_cast(expression)
dynamic_cast(expression),沿着继承关系向下进行类型转换,对于指针转换失败,将返回空指针;对于引用转换失败,抛出异常。

3、数组与多态的不可混用
数组名称类似于引用,不可更改其指向。
数组源自于C,多态是C++概念,两者之间混用将带来bug。
数组连续存储,根据元素类型为其分配好空间后,在做初始化(调用对象的默认构造函数),将一个派生类对象的数组赋值给基类对象数组,可能发生对象切割(对象不完整),调用虚函数将发生不可知行为。

4、默认构造函数
功效:不利用任何外

你可能感兴趣的:(more,effective,C++,c++)