版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxt_1/article/details/88651944
1. 指针、引用
- typedef:给已存在的类型起一个别名
cstr实际类型:
- 指向指针的指针
- 函数指针
- 引用做类的数据成员
- 必须用初始化列表初始化
- 必须自定义构造函数
2. 类
- 在类内部定义的函数默认为inline(内敛函数)
- 成员变量的初始化顺序与变量在类中的声明顺序相同
- 对于类类型的数据成员若未在初始化列表显示初始化,而是在函数体里赋值,则相当于先调用类的默认构造函数进行初始化,再在函数体内赋值,相比于直接利用初始化列表,效率较低。
- 必须在构造函数初始化列表中进行初始化:
- 没有默认构造函数的类类型的成员
- const类型的成员变量
- 引用类型的成员变量
- 成员函数的覆盖
- 成员函数的隐藏
- 两个函数参数相同,但基类函数不是虚函数
- 两个函数参数不同
- 例题
3. 面向对象编程
-
共有继承
父类的protected成员成为子类的protected成员,可以被子类中的成员函数及其友元函数访问,不可以由子类对象访问。 -
转换构造函数、类型转换函数
-
虚函数多态
- 静态多态性:函数重载、运算符重载
动态多态性:虚函数
-
为什么C++不支持友元函数为虚函数?
因为C++不支持友元函数的继承,没有实现虚函数的必要。
-
typeid:返回指针或引用所指对象的实际类型
typdid(e) -
显示转换
-
格式:cast_name<type>(expression)
-
reinterpret_cast
-
const_cast
去掉const
-
static_cast
仅当类型之间可隐式转换时,static_cast的转换才是合法的。
C++基本类型的指针之间不能隐式转换。 -
dynamic_cast
type必须是类的指针、引用、void*