C++派生类的构造和析构顺序详解
派生类因为要调用基类,所以构造和析构都是按照一定顺序进行;
构造的顺序是:基(base)-派生(derived);即先构造基类,再构造派生类;
因为基类是独立于派生类的,即不会调用派生类中的对象,所以应该先被生成;
如果派生类先于基类生成,则因为无法调用基类资源,可能生成失败;
析构的顺序是:派生(derived)-基(base);即先释放派生类,再释放基类;
因为派生类需要先释放调用的基类资源,所以应该优先释放;
如果基类先析构,则有可能某些资源被派生类占用,可能导致析构失败;
派生类的构造和析构顺序正好相反;
代码:
/**CppPrimer.cpp**Createdon:.11.12*Author:Caroline*//*eclipsecdt*/#includeiostream#includestring#includevector#includememory#includecstddefusingnamespacestd;classQuote{public://Quote()=default;Quote(){std::cout"thisisQuoteconstructor"std::endl;}Quote(conststd::stringbook,doublesales_price):bookNo(book),price(sales_price){}std::stringisbn()const{returnbookNo;}virtualdoublenet_price(std::size_tn)const{returnn*price;}//虚函数//virtual~Quote()=default;//动态绑定析构器virtual~Quote(){std::cout"thisisQuotedestructor"std::endl;}private:std::stringbookNo;protected://受保护类型doubleprice=0.0;};/*更多精彩内容:白颠疯如何治哪个医院治白癜风较好