构造发生,就是开始使用时定义,类就开始构造;析构就是对象不再使用时调用。对象构造时调用构造函数,对象析构时调用析构函数。
那派生类构造时基类构造吗?顺序是怎样?
派生类析构时基类析构吗?顺序是怎样?
带着这两个问题写段代码来说明下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
// 梁笔记 // https://zouzhongliang.com #include <iostream> #include <ctime> using namespace std; class BaseCar{ private: string brand; int wheelNum; float carL; float carW; public: BaseCar() :brand(""), wheelNum(4), carL(3),carW(1.8) { cout<<"BaseCar类调用构造函数"<<endl; } BaseCar(string _brand, int _wheelNum, float _carL, float _carW) :brand(_brand), wheelNum(_wheelNum), carL(_carL),carW(_carW) { } ~BaseCar(){ cout<<"BaseCar类调用析构函数"<<endl; } }; class Bus : public BaseCar{ private: bool electric; public: Bus() :BaseCar(), electric(true) { cout<<"Bus类调用构造函数"<<endl; } Bus(string _brand, int _wheelNum, float _carL, float _carW, bool _electric) :BaseCar(_brand,_wheelNum,_carL,_carW), electric(_electric) { } ~Bus(){ cout<<"Bus类调用析构函数"<<endl; } }; int main() { Bus bus; return 0; } |
测试结果:
1 2 3 4 |
BaseCar类调用构造函数 Bus类调用构造函数 Bus类调用析构函数 BaseCar类调用析构函数 |
派生类构造时会先调用基类构造函数,派生类析构先调用自己析构函数,再调用基类析构函数。
派生类与基类构造析构顺序,可以很好理解,写个好记的方法。
基类比作门,派生类比做窗。当进门时(构造),先打开门,再打开窗;当出门时(析构),先关窗,再关门。
估计还有人会问题,当我没有定义析构和构造函数哪怎么调用?答案就是C++会自己生成默认的构造函数,析构函数,只是函数内什么都没做。
问这问题可以看下这篇会有帮助:弄清C++在幕后为你所写、所调用的函数
This is nicely said! . hemp oil
Point effectively regarded!. Can I Take Cialis After Alcohol
Kudos, Quite a lot of stuff.
cbd oil for sale
Nicely put, Cheers! citalopram 20 mg
Many thanks! Valuable information. order prescriptions online without doctor
Wonderful write ups, Thank you. cbd hemp oil
You actually reported this perfectly! aarp approved canadian online pharmacies
Awesome information. Kudos. zyloprim
Thanks. Quite a lot of forum posts!
citalopram