1 多维数组
不管几维数组,都应当做一维数组看待,
以数组方式new一块内存,永远返回第一个元素的地址:
通过new操作符分配N维数组,返回N-1维数组指针:
int (*pa)[4] = new int[3][4]; // 返回值类型是 int (*)[4]
int (*pb)[4][5] = new int [3][4][5]; // 返回值类型是 int (*)[4][5]
2 访问成员函数
访问普通成员函数:通过对象,或 *this
访问静态成员函数:通过对象,或 类
3 类型转换
- static_cast 有2种应用场景: 隐式转换的逆转换 和 自定义转换
- ynamic_cast 只有1种应用场景:将子类类型指针/引用 转换为 基类类型指针/引用
- const_cast 只有1种应用场景:去除指针/引用的const属性
- reinterpret_cast 可实现任意类型指针之间的转换
- static_cast是在编译期间进行检查并实现转换,dynamic_cast是在运行期间
- dynamic_cast在转换指针时若失败,则返回空指针,在转换引用时若失败,则抛出异常
- 类类型 到 类类型 转换,既可利用 类型转换构造函数,也可利用 类型转换操作符函数
- 基本类型 到 类类型 转换,只能利用 类型转换构造函数
- 类类型 到 基本类型 转换,只能利用 类型转换操作符函数
- 多重继承下,子类对象的地址 隐式转换为 各个基类类型指针时,编译器会做适当偏移计算