第二章
1. 类是对象的抽象,对象则是类的实例。类是抽象的,不为其分配存储空间,对象是具体的,要为其分配存储空间。类与结构的异同。
2. private(私有的)— 只能被本类的成员函数引用。类外的不能引用(友元类除外),默认值。
public(公用的)— 既可以被本类的成员函数引用,也可被本类中的其他函数引用。
protected(受保护的)—不能被生成类外访问,但可以被生成类的成员函数访问。
3. 只有函数名相同,参数的数据类型不同或参数的个数不同的函数才能能进行重载。
4.允许访问类的所有对象的公有成员,私有成员和保护成员的是友元(friend)函数。友元函数破坏了类的封装性, 友元函数必须在类的内部用friend进行声明, 友元函数不是类的成员函数是普通函数。友元类的所有成员函数都是友元函数。
5.成员函数可以重载,可设置参数的默认值,可以是静态,也可以是内联函数。
6.函数重载是指用同一函数名定义多个函数,重载函数可以实现同一类操作,重载函数的名字相同,但参数的个数或参数的类型不同,如果只是函数返回值的类型不同则不可重载。
7.cout是对象名。
第三章
1.构造函数:构造函数名与类名相同,无返回值(也不能写void),可以有也可没有参数,可以有默认参数,可重载,定义对象时自动调用。若该类没有定义任何构造函数则编译系统自动为一个类生成缺省构造函数。
2.析构函数:构造函数名与类名前加一个“~”符号,无返回值,无参数,不能重载(即只能定义一个析构函数),释放对象时自动调用。
3.拷贝函数(复制构造函数)的写法:B(B &t){}。参数为对象引用。
4. 常对象的值不能改变,常对象调用常函数,定义常对象时要加关键字const。但常成员函数可以被非常对象调用,常成员函数可以引用类中的数据成员,但不可以改变类中数据成员的值。
5.静态(static)数据成员在类外初始化,静态数据成员是所有对象所共有,可通过类名或对象名访问,静态数据成员的值对所有对象都是一样的。静态成员函数不能访问本类中的非静态数据成员。
6.用new分配对象时可以指定初值,使用它创建对象时要调用构造函数,用delete运算符删除动态对象。
第四章
1. 不是所有运算符都能重载(. .* :: sizeof ?:)。不可以给运算符赋予新的含义。不可以为重载的运算符参数设置默认值。有的运算符只能作为成员函数重载(类型转换函数)。
第五章
1.派生类至少有一个基类,派生类可以作为另一个派生类的基类,派生类的缺省派生方式是private,派生类可以是私有派生、保护派生或共有派生。
2. 如果派生类调用基类成员出错,原因是基类成员是私有的(若基类成员是公有或保护的则可以被派生类成员函数直接访问)。
3.若派生类的数据成员中有子对象,则定义一个派生类对象时,各构造函数的执行顺序是先调用基类构造函数、子对象类构造函数最后调用派生类构造函数。
4. 若派生类的数据成员中有子对象,则定义一个派生类对象时,各析构函数的执行顺序是先调用派生类构造函数、子对象类构造函数最后调用基类构造函数。
5. 基类不可以给派生类赋值,派生可以给基类赋值(因为基类对象不包含派生类的成员)。
第六章
1. 虚函数必须是类的成员函数。
2.凡是包含纯虚函数的类是抽象类。抽象类为一个类族提供一个公共接口,通常用作基类,不可以定义其对象。
virtual float area() const {return 0;}——-虚函数
virtual float area() const=0——-纯虚函数