2013-02-12 74 views
3

我正在阅读“Thinking in C++”的第13章。下面来自这本书。C++中的新运算符

MyType * fp = new MyType(1,2);

在运行时, 的malloc(的sizeof(的MyType))的等效被调用,和MyType的构造是 称为用所得的地址作为该指针,使用(1,2)作为 参数名单。在指针分配给fp时。

我被大胆的句子搞糊涂了。这是什么意思?

回答

5

这是一个非常松散的解释,但它基本上说,结果是一个内存位置,就像malloc将返回,并在该内存位置的物体构造(this是指向当前对象)使用构造与该参数列表。

+1

强调_very松散explain_,请参见[this](http://stackoverflow.com/questions/7194127/how-should-i-write-iso-c-standard-conformant-custom-new-and- delete-operators /)多少'operator new'必须超过'malloc' – David 2013-02-12 21:56:27

+0

还有一个问题,何时以及如何对这个指针进行初始化? – Fihop 2013-02-12 22:19:52

+0

@FihopZz创建对象时 - 构造函数体进入之前和成员初始化之前。 – 2013-02-12 22:26:41

4

new运算符动态分配内存时,它返回一个指向该内存的指针(类似于C中的malloc()工作方式)。在C++中,每个非静态方法都可以访问它所调用的当前对象(否则世界各地的C++程序员将面临严重的麻烦)。这也是构造函数中方法的“隐含参数”,可以通过关键字this访问它。

这句话的含义是,在创建对象之后,操作员将调用刚分配的内存上的构造函数因为这是唯一有意义的东西。 :)

+0

@PeteBecker让它成为... – 2013-02-12 21:58:38

+0

还有一个问题,这个指针何时以及如何初始化? – Fihop 2013-02-12 22:20:13

+0

@FihopZz这里并将其分配给分配的内存区域的地址。 – 2013-02-12 22:20:53