学习没有捷径,但考试有捷径
临近考试,虽然之前对一些概念搞清楚了,但时日一长,很多又模糊了。因此利用整理成章,将知识重拾。
考试的范围如下:
- 常量(const、符号、字符串常量、立即数)
- 引用和指针
- 类的封装和隐藏(静态成员、友元函数)
- 类的初始化(初始化方式和顺序)
- 类的继承(继承方式、构函列表、多继承)
- 类的多态性(函数重载、运算符重载、虚函数、虚函数表)
- 类的作用域概念
顺序规则
先长辈,再客人,最后自己
即:先初始化继承基类,再初始化成员对象,最后初始化自身数据成员
对象数组
初始化,可使用
- 初始化列表
- 构造函数
- 类型转换函数(单个参数)
元素不得为不同类的对象
A a[5] = { 2,4,5,3,6 };
a[1] = A(9);
a[2] = 3;
按照数组排列顺序构造,反序析构
对象成员
一个类的对象做为另一个类的成员,叫做对象成员,另一个类叫容器类。
先初始化对象成员,再初始化容器类
不为容器类提供默认构函
A ac;
B()
{
cout << "constructor of B" << endl;
b = 0;
ac=A(0);
cout << "set b to 0" << endl;
}
B(int b) :b(b), ac(b-4)
{
cout << "constructor of B" << endl;
cout << "set b to " << b << endl;
}
~B()
{
cout << "b is " << b << endl;
cout << "destructor of B" << endl;
}
- 自动对象,定义构造,离开定义域析构
- 内部静态成员,从定义开始构造,程序结束析构
- 外部对象,外部静态成员,程序运行构造,程序结束析构