详询:用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); 这种。
请指教! 展开
在另一个函数中:
ATEST *test = new ATEST();
ATEST *test = new ATEST;
ATEST test;
这几个格式是什么区别?还有ATEST *test = new ATEST(param); 这种。
请指教! 展开
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)
这种是指定调用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)
展开全部
ATEST *test = new ATEST();
在堆上生成一个ATEST类的对象,
在栈上声明一个变量指向ATEST对象的指针变量test,让test指向堆上的刚生成的ATEST对象
ATEST *test = new ATEST;
ATEST *test = new ATEST(param);
和上面类似,区别在于调用的是ATEST类的不同的构造函数
ATEST test;
这个就是直接在栈上生成一个ATEST类的对象test;
在堆上生成一个ATEST类的对象,
在栈上声明一个变量指向ATEST对象的指针变量test,让test指向堆上的刚生成的ATEST对象
ATEST *test = new ATEST;
ATEST *test = new ATEST(param);
和上面类似,区别在于调用的是ATEST类的不同的构造函数
ATEST test;
这个就是直接在栈上生成一个ATEST类的对象test;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询