c++定义类的对象时构造函数的调用

c++定义类的对象MyClassa,b[2],*c,**d,*e[2],*f=newcharA,*g=newcharB[2]分别调用几次构造函数?为什么?... c++定义类的对象MyClass a,b[2],*c,**d,*e[2],*f=new char A,*g=new char B[2]分别调用几次构造函数?为什么? 展开
 我来答
duck_lwz
推荐于2016-06-10 · TA获得超过512个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:331万
展开全部
MyClass a:定义一个对象,调用1次构造函数
b[2]:定义含有两个元素的数组,实际上定义两个对象,所以调用2次构造函数。
*c:定义指向类对象的指针,但没有进行实际的内存分配,所以不调用构造函数。
**d:定义指向类对象指针的指针,但没有进行实际的内存分配,所以不调用构造函数。
*e[2]:定义含有两个指向类对象的指针的数组,但没有进行实际的内存分配,所以不调用构造函数。
*f=new char A:这个语句有问题,f是指向MyClass的对象,你却让它指向char类型的变量。应该改成:*f=new MyClass,涉及到内存的分配,调用1次构造函数。
*g=new MyClass [2],涉及到内存的分配,调用2次构造函数。
总结:只有涉及到内存分配的时候,才会调用构造函数。普通对象调用一次,对象数组调用N次(该数组含有N个元素)。只定义指针而不给指针赋值,则不涉及内存分配,不调用构造函数。
123yanwenhui
2012-01-03 · 超过18用户采纳过TA的回答
知道答主
回答量:89
采纳率:100%
帮助的人:27.7万
展开全部
我觉得应该是六次,a一次,b【2】二次,*f一次,*g二次剩下的全都是取地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vodka189
2012-01-03 · TA获得超过773个赞
知道答主
回答量:223
采纳率:0%
帮助的人:125万
展开全部
记住:对象只是一段内存。它可能属于多个类。即使那个类是一个抽象类。子类就可以说,一个活生生的人正在吃饭((person*)&jack ->eating() 调用成功
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热爱自由66
2012-01-04
知道答主
回答量:6
采纳率:0%
帮助的人:5.8万
展开全部
duck_lwz 正解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式