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

C++中的new操作,该怎么处理

2012-05-24 
C++中的new操作classMeat{public:Meat()protected:intName[20]floatprice}Meat*meatnewMeat这步中,

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”的函数,目的是在这块内存上构造对象;最后返回这个对象对应类型的指针。

热点排行