C++中的new操作
class Meat
{
public:
Meat();
protected:
int Name[20];
float price;
};
Meat* meat = new Meat;
这步中,是先调用Meat的构造函数,后在堆里分配内存呢?还是反过来的。。??求教。。。
[解决办法]
先有内存new,后用构造函数进行初始化。
[解决办法]
构造函数在建立对象时系统自动调用,如自己定义则执行定义的构造函数
LZ 定义Meat 型指针指向一个对象,则只有对象建立后,指针才能成功指向此对象
所以,先分配内存,然后指针指向这个地址,然后调用构造函数。
LZ想想看,如果你定义一个函数fun();
当你调用的时候,系统难道在每次你调用都给你分配内存吗,这岂不是很浪费
所以系统看代码的时候从上往下,先分配内存,当调用的时候直接找到函数代码区执行此函数
这不就方便多了,
这个类也一样,先预定给它分配内存,调用的时候执行构造函数(但是没调用的时候不执行构造函数,系统预定的)
[解决办法]
new 共做三个事情:new 先调用malloc函数分配对象所需的内存空间;而后在这个块分配的控件上调用一个叫做“placement new”的函数,目的是在这块内存上构造对象;最后返回这个对象对应类型的指针。