C派生类的构造和析构顺序详解

  

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;};/*更多精彩内容:







































白颠疯如何治
哪个医院治白癜风较好



转载请注明:http://www.nydjfy.com/xxzl/xxzl/892.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了