详询:用new实例化一个对象指针的格式?

用new实例化一个对象指针的格式,比如现有类classATEST,在另一个函数中:ATEST*test=newATEST();ATEST*test=newATEST;AT... 用new实例化一个对象指针的格式,比如现有类class ATEST,
在另一个函数中:
ATEST *test = new ATEST();
ATEST *test = new ATEST;
ATEST test;
这几个格式是什么区别?还有ATEST *test = new ATEST(param); 这种。
请指教!
展开
 我来答
小萝卜tan
2013-12-14 · TA获得超过105个赞
知道小有建树答主
回答量:56
采纳率:0%
帮助的人:98.2万
展开全部
第1种:ATEST *test = new ATEST();

这种是指定调用ATEST无参构造函数,创建一个ATEST对象,所创建的对象存储地址赋值给test指针,实际上根据需要,为ATEST类定义(多个)构造函数,new ATEST(参数列表),选择传入不同的参数

第2种:ATEST *test = new ATEST;

这种是创建一个ATEST对象,系统隐式调用ATEST类的默认构造函数,不能传递任何参数,所创建的对象存储地址赋值给test指针

第3种:ATEST test;

声明ATEST对象,声明的同时由于没有传递任何参数,所以也是调用了默认构造函数创建了一个对象,并且test不是对象指针,而是对象

第4种:ATEST *test = new ATEST(param);

其实第1种是第4种的特殊形式,特殊在于无参

同样第3中也可以有参的
ATEST test(param)
百度网友6fe74e2
2013-12-14 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:260万
展开全部
ATEST *test = new ATEST();

在堆上生成一个ATEST类的对象,
在栈上声明一个变量指向ATEST对象的指针变量test,让test指向堆上的刚生成的ATEST对象

ATEST *test = new ATEST;
ATEST *test = new ATEST(param);
和上面类似,区别在于调用的是ATEST类的不同的构造函数

ATEST test;

这个就是直接在栈上生成一个ATEST类的对象test;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式