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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c语言数据结构单链表合并
c语言数据结构中有关单链表的合并问题代码
与字符串有关的一些典型问题的C++解法
一、C++中String类的用法总结 http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html http://www.cnblogs.com/gaojun/archive/2010/09/11/1824016.html http://www.cnblogs.com/ggjucheng/archive/201
下面有关malloc和new,说法错误的是?
下面有关malloc和new,说法错误的是?  正确答案: C   你的答案: 空 (错误) new 建立的是一个对象, malloc分配的是一块内存. new 初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数,malloc仅仅分配内存,free仅仅回收内存 new和malloc都是保留字,不需要头文件支持 new和ma
自己的总结(你必须知道的C 495个问题)
类型定义 typedef int (*funcptr) ( ); 是什么意思 这个的意思是定义了一个funcptr类型,其是指向返回值为int的无参的函数指针 funcptr fp1 = main; 结构体类型定义下的问题typedef struct { char *item; NODE next; } *NODE;这个代码在编译时报出错误信息,说是未声明的调用,这是常
C/C++编程题之圆桌游戏
n个人围坐在一个圆桌上从1到n编号,顺时针从第一个人开始报数,从1开始报到m(m < n),报到m的那个人出圆桌,再从出桌的人的下一个人从1开始报数,直到圆桌上的人不足m人位置,输出最终剩下人的编号。bool RoundTable(int n,int m,list<int>& personList) { personList.swap(list<int>()...
C语言中的整型位数和CPU的关系问题总结
在我们的C语言中有很多的类型,其中整型的位宽应该是针对于CPU的位数而言的(我的学习理解),然后就出现了一个问题,对于8051单片机来说,CPU是8位的,然而int类型占用的是两个字节,也就是16位,那通过更进一步的了解发现,这个不仅仅和CPU的位数有关,主要和C语言标准有关(这里可以说是和编译器有关,因为所有的C编译器都是根据C语言标准走的)那么由于C标准定义了int类型和short类型的最小占...
有关new File中的路径问题
<br />默认路径是工程的根目录
new和malloc的用法...
(收集整理from web) 1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存 2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构
c++中new容易出现的问题
在c代码中经常会见到这样的代码  char * str=(char *)malloc(100*sizeof(char)); if (str==NULL) { //错误处理 } 出于习惯的问题,在C++中也中也这么写 m_pToolBarDlg=new CDYToolBarDlg(); if (m_pToolBarDlg==NULL) { StringCchPr
C中有关i++的问题
今天碰到了有关i++的一个奇怪的问题,和自己以前认为的完全不一样。代码如下#include #include main(){ unsigned char array[] = {0xaa, 0xbb, 0xcc, 0xdd, 0xee}; u_int8_t tmp0; u_int16_t tmp1; int i; i = 0; tmp1 = array[i++] | ((u_int