C++学习(二)-继承与派生(1)

来源:互联网 发布:何洁的长相 知乎 编辑:程序博客网 时间:2024/06/06 08:41

1,在派生类中,可以增加新的数据成员;可以增加新的成员函数;重新定义基类中的成员;改变基类在派生类中的访问访问属性。

2,基类成员在派生类中的访问属性由基类成员本身的属性和派生类的继承方式共同决定。类的继承方式有三种:公有继承,保护继承,私有继承。当继承方式未指定时,默认是私有继承。

  •   当派生类从基类公有继承时,基类中的所有公有成员在派生类中都以公有方式出现,所有的保护成员仍以保护的方式出现,所有的私有成员不允许派生类继承。在派生类的内部可以直接访问基类的公有成员,保护成员,不可访问基类的私有成员;在内外,通过派生类的对象,可以访问基类的公有成员,不可访问基类的保护成员,私有成员。
  • 当派生类从基类保护继承时,基类的公有成员在派生类中都以保护的方式出现,所有的保护成员仍以保护的方式出现,所有的私有成员不允许被派生类继承。在派生类的内部可以直接访问基类的公有成员,保护成员,不可访问基类的私有成员;在类外,通过派生类的对象,不可以访问基类的公有成员,保护成员,私有成员。
  • 当派生类从基类私有继承时,基类的公有成员在派生类中都以私有成员的身份出现,所有的保护成员也都以私有成员的身份出现,所有的私有成员不允许派生类继承。在派生类的内部可以直接访问基类的公有成员,保护成员,不可访问基类的私有成员;在类外,通过派生类的对象,不可访问基类的公有成员,保护成员,私有成员。

      总结:派生类无论以哪种方式从基类继承,都可以在派生类的内部直接访问基类的公有成员保护成员

                基类的私有成员,无论以哪种方式继承,都无法被派生类继承,都不可以在派生类中直接访问。

3,派生类不能继承基类中的构造函数和析构函数,当基类中的构造函数带有参数时,派生类中必须定义构造函数并且须向基类中的构造函数传入参数。若基类中采用默认的构造函数或构造函数不带参数,则派生类中的构造函数可以不定义;构造函数的调用严格按照先调用基类的构造函数,再调用派生类的构造函数,析构函数是先调用派生类的析构函数,再调用基类的析构函数。

4,派生类中的数据成员含有基类的对象时,构造函数的调用规则是先调用基类的构造函数,再调用基类对象(子对象)的构造函数,即基类的构造函数被调用了两次,最后再调用派生类的构造函数;析构函数的调用顺序正好相反。

5,若派生类的基类也是个派生类,每个派生类只需负责其直接基类的成员初始化,依次上朔。


6,构造函数可以被重载。




0 0