c++里使用动态分配内存,如何调用带参数的构造函数?

 我来答
西子子陵6295
2018-02-01 · TA获得超过200万个赞
知道顶级答主
回答量:74.9万
采纳率:51%
帮助的人:3.8亿
展开全部
你可以输入以后再拷贝到数组里去(operator=),因为定义对象数组时就必须初始化每个对象,所以
student = new Student[n];
这一句实际上已经调用了每个对象的无参数构造函数,如果你没有提供一个无参数的构造函数那么这个句子会报错

另一种方法是
Student** student;
student = new Student*[n];

// 输入第i学生的信息
// student[i] = new Student(构造参数);

这样就可以实现你说的输入以后再根据输入信息构造了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
常山赵子龙66
2018-05-29 · TA获得超过1.4万个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:6.6万
展开全部
  1. MyClass a:定义一个对象,调用1次构造函数。

  2. b[2]:定义含有两个元素的数组,实际上定义两个对象,所以调用2次构造函数。

  3. *c:定义指向类对象的指针,但没有进行实际的内存分配,所以不调用构造函数。

  4. **d:定义指向类对象指针的指针,但没有进行实际的内存分配,所以不调用构造函数。

  5. *e[2]:定义含有两个指向类对象的指针的数组,但没有进行实际的内存分配,所以不调用构造函数。

  6. *f=new char A:这个语句有问题,f是指向MyClass的对象,你却让它指向char类型的变量。应该改成:*f=new MyClass,涉及到内存的分配,调用1次构造函数。

  7. *g=new MyClass [2],涉及到内存的分配,调用2次构造函数。

  8. 总结:只有涉及到内存分配的时候,才会调用构造函数。普通对象调用一次,对象数组调用N次(该数组含有N个元素)。只定义指针而不给指针赋值,则不涉及内存分配,不调用构造函数。

  9. C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

  10. C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

  11. C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式