注册 登录
编程论坛 C++教室

有关new的问题

czyhzc 发布于 2012-03-08 13:03, 308 次点击
如果类型X有个默认的构造函数,那么
X* p1=new X;
X* p2=new X[17];是不是都是对的,
另外 如果类型Y有一个构造函数,但不是默认的构造函数,那个下面的哪个是正确的
Y* p3=new Y;
Y* p4=new Y[17];
Y* p5=new Y(17);
求解!!!
3 回复
#2
czyhzc2012-03-08 13:17
求解啊
#3
cb02122012-03-08 14:24
X的都是对的。Y的难说
#4
BianChengNan2012-03-08 16:09
以下是引用czyhzc在2012-3-8 13:03:55的发言:

如果类型X有个默认的构造函数,那么
X* p1=new X;
X* p2=new X[17];是不是都是对的,
另外 如果类型Y有一个构造函数,但不是默认的构造函数,那个下面的哪个是正确的
Y* p3=new Y;
Y* p4=new Y[17];
Y* p5=new Y(17);
求解!!!
不知道楼主想要表达的真实意思,我试着说说
X* p1=new X;    //在堆上定义了一个X的变量,调用默认的构造函数 delete的时候用 delete p1
X* p2=new X[17];    //在堆上定义了一个数组,元素是X的变量,对每个元素调用默认的构造函数,所以一共调用了17次,记得delete的时候用 delete []p2

如果Y的构造函数带参数,或者说Y没有不带参数的构造函数那么不能用这种写法,所以前两个都错
Y* p5=new Y(17); //在堆上定义了一个Y的变量,并调用构造函数初始化 delete的时候用 delete p5



1