从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍C++中继承与动态内存分配的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一.派生类不使用new
派生类是否需要为显示定义析构函数,复制构造函数和赋值操作符呢?
不需要!
首先,来看是否需要析构函数,如果没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数。实际上,派生类的默认构造函数总是要执行一些操作:执行自身的代码后调用基类析构函数。因为我们假设派生类的成员不需要执行任何特殊操作,所以默认析构函数是合适的。
再看复制构造函数。默认复制构造函数执行成员复制,这对于动态内存分配来说是不合适的,但对于新的派生类的成员来说是合适的。因此只需要考虑继承的基类的对象。要知道,成员复制将根据数据类型采用相应的复制方式,因此复制类成员或继承的类组件时,则是使用该类的复制构造函数完成的。所以派生类的默认复制构造函数使用基类的显示复制构造函数来复制派生类对象的基类成员部分。因此,默认复制构造函数对于新的派生类而言是合适的。
对于赋值来说,同样道理。
二.派生类使用new。
如果派生类需要new操作,那么需要显示定义析构函数,复制构造函数和赋值操作符。
派生类析构函数自动调用基类的构造函数,故其自身的职责是对派生类构造函数执行工作的进行清理。
接下来看复制构造函数:
DerivedClass::DerivedClass(const DerivedClass& de):BaseClass(de) { //....... }
看赋值操作符:
DerivedClass::operator=(const DerivedClass& de) { if(this == &de) return *this; BaseClass::operator=(de); //.......... }
总之,当基类和派生类都采用动态内存分配时,派生类的析构函数,复制构造函数以及赋值操作符都必须使用想用的基类方法来处理基类元素。这种要求是通过三种不同的方式来满足的。
1.对于析构函数,这是自动完成的;
2.对于构造函数,这是通过在初始化成员列表中调用基类的复制构造函数来完成的;如果不是这样做,将自动调用基类的默认构造函数。
3.对于复制操作符,这是通过使用作用域解析操作符显示的调用基类的赋值操作符来完成了。
以上是“C++中继承与动态内存分配的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图