E3内部其实是将E2函数注册进了atexit函数,当结束的时候则会调用E2
那么现在看看E2
E2函数内部:
?...E2函数内部则会调用析构函数,有人会说,为什么不直接将析构注册为函数回调,这样直接调用atexit不就在释放的时候,从后往前依次调用析构的了吗....PS: 注意,局部对象和传参的区别,局部对象会在函数内部进行调用构造,而传参的时候是在函数外面进行的初始化动作
三丶返回值为对象的识别
当返回值为对象的时候,会有两种情况
1.定义的时候产生拷贝动作...1.调用的时候,当做参数传递给Getobj
3.函数结束之后调用析构
2.函数内部调用构造和析构
(其中2在Getobj里面,看Release版本)
Release下的汇编
?...五.堆中对象识别
高级代码:
MyTest *t = new MyTest ;
Debug下的汇编:
?
new 和malloc是一样的,new是对malloc的一个封装.