数据结构第12课 顶层父类的创建

本文学习自 狄泰软件学院 唐佐林老师的 数据结构课程


问题:我们创建数据结构为啥要创建一个顶层父类呢义和价值是什么/strong>

数据结构第12课 顶层父类的创建

new操作如果失败会发生什么/strong>
new成功的时候 各个编译器之间没有什么差异,但是new失败的情况,编译器之间就会产生不同的结果,比如早期的C++编译器在new失败的时候会返回一个空指针,但是很多现C++编译器在new失败的时候会抛出一个标准库里面的异常,这就给我们创建一个可复用的代码库带来了一定的困难。因为如果说new失败了,我们这个库里面的代码如何处理才能兼容绝大多数编译器。

数据结构第12课 顶层父类的创建

Object.cpp

main.cpp

运行结果:
Object::operator new: 12
Object::operator new: 16
obj1 = 0x5719c8
obj2 = 0x5719c0
Object::operator delete: 0x5719c8
Object::operator delete: 0x5719c0

说明:
打印 “Object::operator new”” 说明没有调用系统的new,而是调用了顶层父类的new,
打印 “Object::operator new: 12” 说明 Test对象需要12个字节 12 = i(4)+j(4)+p(4:隐藏着的指向虚函数表的指针)
打印 “Object::operator new: 16” 说明 Child对象需要16个字节 16 = i(4)+j(4)+k(4)+p(4:隐藏着的指向虚函数表的指针)
打印 “Object::operator delete:” 说明删除时使用的不是系统delete 而是调用了顶层父类的delete

数据结构第12课 顶层父类的创建

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33932 人正在系统学习中

来源:奶牛养殖场小马

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月18日
下一篇 2019年9月19日

相关推荐