首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

深度探索C++ 对象模型

2013-08-09 
求教:深度探索C++ 对象模型在深度探索c++对象模型 这本书中的 第196页Point* heap new Point其中Point

求教:深度探索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 

热点排行