C++_继承

  C++支持单继承和多继承,并提供3类继承:public、private及protected。在public继承中,每个派生类对象都是基类对象,反之基类对象却不是派生类对象。派生类成员无法直接访问基本的private成员,只能通过继承的public成员访问,但private基类成员仍然得到了继承(被视为派生类的一部分)。友元函数是不被继承的。

  基类的protected成员可以由基类所派生的类和友元访问。

#include” Employee.h”
class Manage : public Employee
{…..};


Manage ::Manage(const string& name, const string& ssn, double rate)
    : Employee(name, ssn)  //调用基类构造函数初始化
{……}

  派生类构造函数使用成员初始化器将参数传递给基类的构造函数。C++要求派生类构造函数调用其基类的构造函数来初始化继承到派生类的基类的数据成员。若不显式调用,C++将尝试调用基类的默认构造函数,当基类不提供默认构造函数时,将产生编译错误。

  把基类数据成员声明为protected将节省调用函数设置继承的数据成员的开销。但将产生2个问题:安全性降低;派生类的成员函数的实现可能太依赖基类的实现,当基类中protected数据成员修改时,所有派生类中直接使用此数据成员的地方全部要改。如果可能的话,应尽量避免在基类中包含protected数据成员。

  重定义基类中的成员函数后,可以使用基类::成员函数名调用基类的成员函数(否则有可能造成对自身的无限递归调用)。

  派生类的对象被创建时,先调用并执行基类的构造函数,然后执行派生类的构造函数。派生类对象析构函数调用顺序,与相应的构造函数的调用顺序正好相反。派生类不会继承基类的构造函数、析构函数和重载的赋值运算符,但派生类的构造函数、析构函数和重载的赋值运算符可以调用基类的构造函数、析构函数和重载的赋值运算符。

原文地址:https://www.cnblogs.com/JesusAlone/p/4361210.html