读书人

深度探索C++ 对象模型

发布时间: 2013-08-09 15:16:24 作者: rapoo

求教:深度探索C++ 对象模型
在深度探索c++对象模型 这本书中的 第196页


Point* heap = new Point;
其中Point是一个类。
书中说出了这样的观点,“再一次容我强调,并没有default constructor施行于 new 运算符所传回的Point Object身上。


我没理解这句话,难道是说,new 之后没有调用默认构造函数?这不可能吧。。。。那作者指的是什么呢
[解决办法]
http://www.16kan.com/question/detail/321920.html
[解决办法]
当一个类无需构造的时候(比如下面的例子),只有四个函数trivial default constructor,trivial copy constructor,trivial assignment operator,trivial destructor,而且这四个函数也是抽象的,不实际存在的。实际上,编译器会打上一个Plain Ol’ Data(POD)标签,至于default constructor,根本没有,就更不可能调用了。


class A
{
int a;
int b;
};

int _tmain(int argc, _TCHAR* argv[])
{
A* a = new A;
return 0;
}


看汇编,new 完之后就直接开始操作eax了,即处理返回值了:

A* a = new A;
00AC2FDE push 8
00AC2FE0 call operator new (0AC1181h)
00AC2FE5 add esp,4
00AC2FE8 mov dword ptr [ebp-0D4h],eax
00AC2FEE mov eax,dword ptr [ebp-0D4h]
00AC2FF4 mov dword ptr [a],eax
return 0;
00AC2FF7 xor eax,eax

读书人网 >C++

热点推荐