C++类和对象知识点整理五----派生类的构造函数和析构函数
2017-09-10 20:39
381 查看
22、C++派生类中的构造函数
a.基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。
构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。
b.在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成,但是大部分基类都有private属性的成员变量,他们在派生类中无法访问,更不能用派生类的构造函数来初始化
这种矛盾在C++继承中是普遍存在的,解决这个问题的思路是:在派生类的构造函数中调用基类的构造函数
c.构造函数的调用顺序
基类构造函数总是被优先调用,这说明创建派生类对象时,会先调用基类的构造函数,在调用派生类的构造函数,如果继承关系有好几层的话,以此类推。
注意:派生类构造函数只能调用直接基类的构造函数,不能调用间接基类的。
因为这样做的话最原始的基类构造函数会被调用多次,相应的,初始化工作也会做多次,这不仅是多余 的,还会浪费CPU时间以及内存,毫无益处。
事实上,通过派生类创建对象时必须要调用基类的构造函数,这是语法规定,换句话说,定义派生类构造函数时最好知名基类构造函数,如果不指明,就调用基类的默认构造函数(不带参数的构造函数)如果没有默认构造函数,那么编译失败
23、C++派生类的析构函数
和构造函数类似,析构函数也不能被继承,与构造函数不同的是,再派生类的析构函数中不用显示调用基类的析构函数,因为每个类职业一个析构函数,编译器知道如何选择,无需程序员干涉
。
b.析构函数的执行顺序与构造函数的执行顺序刚好相反
创建派生类对象时,构造函数的执行顺序与继承顺序相同,即先执行基类构造函数,在执行派生类构造函数
而销毁派生类对象时,析构函数的执行顺序和继承顺序相反。
a.基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。
构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。
b.在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成,但是大部分基类都有private属性的成员变量,他们在派生类中无法访问,更不能用派生类的构造函数来初始化
这种矛盾在C++继承中是普遍存在的,解决这个问题的思路是:在派生类的构造函数中调用基类的构造函数
c.构造函数的调用顺序
基类构造函数总是被优先调用,这说明创建派生类对象时,会先调用基类的构造函数,在调用派生类的构造函数,如果继承关系有好几层的话,以此类推。
注意:派生类构造函数只能调用直接基类的构造函数,不能调用间接基类的。
因为这样做的话最原始的基类构造函数会被调用多次,相应的,初始化工作也会做多次,这不仅是多余 的,还会浪费CPU时间以及内存,毫无益处。
事实上,通过派生类创建对象时必须要调用基类的构造函数,这是语法规定,换句话说,定义派生类构造函数时最好知名基类构造函数,如果不指明,就调用基类的默认构造函数(不带参数的构造函数)如果没有默认构造函数,那么编译失败
23、C++派生类的析构函数
和构造函数类似,析构函数也不能被继承,与构造函数不同的是,再派生类的析构函数中不用显示调用基类的析构函数,因为每个类职业一个析构函数,编译器知道如何选择,无需程序员干涉
。
b.析构函数的执行顺序与构造函数的执行顺序刚好相反
创建派生类对象时,构造函数的执行顺序与继承顺序相同,即先执行基类构造函数,在执行派生类构造函数
而销毁派生类对象时,析构函数的执行顺序和继承顺序相反。
相关文章推荐
- C++类和对象知识点整理四---继承
- C++类和对象知识点整理三
- 知识点——派生类生成过程——单继承的构造函数和析构函数
- 在派生类中使用对象成员时,构造函数和析构函数的作用过程。
- 包含对象成员的派生类的构造函数与析构函数
- C++类和对象知识点整理二
- 例4.8 含有对象成员的派生类构造函数和析构函数的执行顺序
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- C++类对象在各种内存区的构造函数析构函数执行顺序
- C++中基类,派生类 类成员对象的构造函数,析构函数的顺序
- C++类和对象知识点整理六-----多继承
- C++类和对象知识点整理七----虚基类和虚继承
- 面向对象的程序设计-学习笔记-23-派生类的构造函数和析构函数
- C++类和对象知识点整理
- C++类和对象知识点整理一
- c++类临时对象、复制构造函数、析构函数 VS2017 与gcc 编译器对比
- C++ 学习总结(十)——C++类与对象,及构造函数,析构函数,拷贝构造函数
- C++基础(九)继承与派生——派生类成员的构造函数和析构函数
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- 黑马程序员_面向对象知识点整理