C++中创建对象数组的问题。

classStudent{};intmain(){//1、Student*stu[3];stu[0]=newStudent();stu[1]=newStudent();s... class Student
{};

int main()
{
//1、
Student* stu[3];
stu[0]=new Student();
stu[1]=new Student();
stu[2]=new Student();

//2、
Student* stu=new Student[3];
}

请问这两种方式到底有什么区别,很纠结...
展开
 我来答
Gifan
2012-04-22 · TA获得超过725个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:262万
展开全部
第一种先是定义3个指向Student类的指针数组,然后每一个指向这个类的指针元素都用构造函数初始化,而第二种就是定义一个指针,动态分配3个数组,数组里面的元素就是那个类的对象,
简单来说,第一种是定义指针数组,而数组里面的元素是那个类的对象的地址
而第二种就是直接是3个数组,存的元素直接是类的对象本身,而不是地址
不知道我这样解析你懂吗
更多追问追答
追问
额,还有2个问题:
1)第一中数组中每个元素都用构造函数初始化,那第二种数组里的每个元素是不是也是用构造函数初始化?
2)第一种数组的每个元素,是不是也是动态分配?这两种数组都要delete吗?
追答
第一个问题,第二种,要看你的构造函数是怎样了,如果是默认构造函数的话,在定义的时候就调用了默认构造函数,所以已经初始化了,如果不是默认构造函数的话就是可以自己带参数去赋值
第二个问题,每个new 对应每个delete 所以你用完之后都要delete掉他。不能重复delete喔,一次就好了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式