1.类的三大特性:封装、继承、多态
2.类背后蕴涵的基本思想:数据抽象和封装
数据抽象: 数据抽象是一种依赖于接口和实现分离的编程(设计)技术。类使用者只需关系类提供了哪些接口,而不必关心该类是如何实现的。
封装:封装是将底层次的元素组合起来形成新的、高层次实体的计算。函数是封装的一种形式。类是一个封装的实体。private 封装了类型的实现细节。
3.具体类型和抽象类型
标准库中的pair是一个具体类。
4.类的定义为什么以分号结尾
在类的定义之后可以接一个对象定义列表。定义必须以分号结束。
class Sales_item {/*......*/};
class Sales_item {/*......*/}item1, item2;
5.构造函数初始化
构造函数分两个阶段执行:(1) 初始化阶段;(2) 普通计算阶段。计算阶段由构造函数函数体中的所有语句组成。
注:不管成员是否在构造函数初始化列表中显示初始化,类类型的数据成员总是在初始化阶段初始化。初始化发生在计算阶段开始之前。
使用构造函数初始化列表:
必须对任何const 或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式。
class ConstRef{
public:
ConstRef(int ii);
private:
int i;
const int ci;
int &ri;
}
//错误的构造函数,ri没有初始化
ConstRef::ConstRef(int ii)
{
i=ii;
ci=ii;
ri=i;
}
//正确的构造函数
ConstRef::ConstRef(int ii):i(ii),ci(i),ri(ii){}
6.成员初始化的次序
成员初始化的次序就是定义成员的次序。第一个成员首先被初始化,然后是第二个...
class X{
int i;
int j;
public:
//错误的初始化,i需要先初始化
X(int val):j(val),i(j){}
//正确的初始化
X(int val):i(val),j(val){}
}