1、公有派生中,基类的共有成员将成为派生类的共有成员;基类的私有部分也将成为派生类的一部分,但只能通过基类的公有和保护方法访问(换句话说,派生类的构造函数必须使用基类的构造函数)。
2、有关派生类构造函数的要点如下:
1)首先创建基类对象
2)派生类构造函数应通过成员初始化列表将基类信息传递给基类的构造函数
3)派生类构造函数应初始化话派生类新增的数据成员。
注意:释放对象的顺序与创建对象的顺序相反,及先执行派生类的析构函数,在执行基类的析构函数。
3、注意,基类指针可以在不进行显示类型转换的情况下指向派生类对象,基类引用可以在不进行显示类型转换的情况下引用派生类对象。反之不成立,基类指针或者引用只能用于调用基类方法,不能调用派生类的方法。
4、C++中实现多态有两种方法:(1)在派生类中重新定义基类的方法,即重写(2)虚方法
如果方法是通过引用或者指针而不是对象调用,它将确定使用哪一种方法。如果没有使用关键字virtual,程序将根据引用类型或者指针类型选择方法;如果使用了virtual,程序将根据引用或指针指向的对象的类型来选择方法。(虚函数的本质作用)
注意:如果要在派生类中重新定义基类的方法,通常应将基类方法声明为虚的。这样,程序将根据对象类型而不是引用或指针的类型来选择方法版本。为类声明一个虚虚构函数也是一种惯例。
5、将派生类引用或者指针转换为基类引用或者指针被称为向上强制转换。这种是允许的,相反将基类引用或指针转换为派生类引用或指针被称为向下转换,这种是不允许的。
6、构造函数不能定义为虚函数,析构函数一般定义为虚函数。
友元不能是虚函数,因为友元不是类成员,而只有成员才能是虚函数。
7、关键字protected与private相似,在类外只能用公有类成员来访问protected部分中的类成员。protected和private之间的区别只有在基类派生的类中才会表现出来。派生类的成员可以直接访问基类的保护成员,但不能直接访问基类的私有成员。
8、包含纯虚函数的类是抽象基类。其中纯虚函数是未实现的函数。纯虚函数声明的结尾处为=0,当类声明中包含纯虚函数时,则不能创建该类的对象,包含纯虚函数的类只用作基类。
9、如果基类使用动态内存分配,并重新定义赋值和复制构造函数,这将怎样印象派生类的实现呢?
1)当派生类不使用new时:
此时不需要任何特殊操作,默认的析构函数是合适的。
2)第二种情况:派生类使用new
此时必须为派生类定义显示析构函数、复制构造函数、和赋值运算符。派生类析构函数自动调用基类的构造函数,故其自身的职责是对派生类构造函数执行工作的清理。
10、析构函数和构造函数都是不能被继承的。复制运算符也是不能被继承的。