我正在阅读“Thinking in C++”的第13章。下面来自这本书。C++中的新运算符
MyType * fp = new MyType(1,2);
在运行时, 的malloc(的sizeof(的MyType))的等效被调用,和MyType的构造是 称为用所得的地址作为该指针,使用(1,2)作为 参数名单。在指针分配给fp时。
我被大胆的句子搞糊涂了。这是什么意思?
我正在阅读“Thinking in C++”的第13章。下面来自这本书。C++中的新运算符
MyType * fp = new MyType(1,2);
在运行时, 的malloc(的sizeof(的MyType))的等效被调用,和MyType的构造是 称为用所得的地址作为该指针,使用(1,2)作为 参数名单。在指针分配给fp时。
我被大胆的句子搞糊涂了。这是什么意思?
这是一个非常松散的解释,但它基本上说,结果是一个内存位置,就像malloc
将返回,并在该内存位置的物体构造(this
是指向当前对象)使用构造与该参数列表。
当new
运算符动态分配内存时,它返回一个指向该内存的指针(类似于C中的malloc()
工作方式)。在C++中,每个非静态方法都可以访问它所调用的当前对象(否则世界各地的C++程序员将面临严重的麻烦)。这也是构造函数中方法的“隐含参数”,可以通过关键字this
访问它。
这句话的含义是,在创建对象之后,操作员将调用刚分配的内存上的构造函数。因为这是唯一有意义的东西。 :)
@PeteBecker让它成为... – 2013-02-12 21:58:38
还有一个问题,这个指针何时以及如何初始化? – Fihop 2013-02-12 22:20:13
@FihopZz这里并将其分配给分配的内存区域的地址。 – 2013-02-12 22:20:53
强调_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
还有一个问题,何时以及如何对这个指针进行初始化? – Fihop 2013-02-12 22:19:52
@FihopZz创建对象时 - 构造函数体进入之前和成员初始化之前。 – 2013-02-12 22:26:41