2 guku001 guku001 于 2016.02.16 16:20 提问

c++中有关new的问题!!!

class app
{
public:
bool creat()
{
app * p = new app();
return true;
}
}

后面的括号有什么用的?
查过说是指明调用该类的默认构造函数,感觉不对,默认构造函数不放回指针的

6个回答

John_ToStr
John_ToStr   Rxr 2016.02.17 13:41
已采纳

有这么两种情况:① app * p = new app(); 指的是如若app类中基本数据成员(包括指针),那么调用默认构造的同时会对相应的成员初始化(整形为0,
指针为NULL, 浮点为0.0 等等)
② app * p = new app; 只调用默认构造, 不会初始化基本类型成员变量...

VisualEleven
VisualEleven   Ds   Rxr 2016.02.16 17:22

new为对象分配一块区域,调用该类的构造函数,并返回该类对象的指针。
后面也可以不加(),如果该类的构造函数没有参数的话,或者参数有default缺省参数。

zuishikonghuan
zuishikonghuan   2016.02.16 21:12

括号里是放实参的,如果构造函数没参数可以不加。
new返回新创建对象的指针

Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 21:51

通过new构建一个对象的指针

collin18
collin18   2016.02.18 18:27

用new 创建对象时, 类名后面是需要有构造函数的。

上面的app类只有默认构造函数,所以就要用这个构造函数了。如果还有其他构造函数,也是可以用其他构造函数的。

oyljerry
oyljerry   Ds   Rxr 2016.02.16 16:26

默认构造函数,new会表示生成一个对象,并返回指针。返回指针是new来做到的

guku001
guku001 但是一般 new后面不是加上类型名就好了吗 这里为什么药加上括号呢
接近 2 年之前 回复
guku001
guku001 但是一般 new后面不是加上类型名就好了吗 这里为什么药加上括号呢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!