C++类的默认构造函数

C++问题:定义一个类的对象数组,例如Circle类的cArray数组:CirclecArray[10];为什么此时Circle类必须有默认的构造函数,不写编译器不是自动... C++问题:定义一个类的对象数组,例如Circle类的cArray数组:Circle cArray[10];为什么此时Circle类必须有默认的构造函数,不写编译器不是自动生成什么都不做的默认构造函数吗?
问题的重点是为什么对象数组需要默认构造函数?这个默认构造函数对于对象数组来说,初始化的结果是怎么样的?
展开
 我来答
yuantailing
推荐于2016-08-08 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:658万
展开全部
如果你不写构造函数,编译器自动生成一个函数体为空的默认构造函数。但如果你写了一个有参数的构造函数,就不会自动生成了,就需要自己写一个无参构造函数。

建立数组需要无参构造函数是因为:你在写数组的时候写法只能是Circle cArray[10],没法传参数进行初始化。而建一个变量时,可以Circle c(<参数表>),可以传参数初始化。默认构造函数初始化的结果是:如果数据成员是对象,那么就调用它的无参构造函数;否则(比如是int, float之类的)则是一个不可预知的值,也就是“乱码”。
ronhou
2013-08-08 · TA获得超过453个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:148万
展开全部
想先问一下,你的Circle类中是不是写有带有参数的构造参数?

在类中没有构造函数的前提下,会自动生成默认的无参构造函数。但是在有构造函数的情况下,会认为你需要的构造函数就是这些,认为你不需要无参构造函数

构造函数一般都会对对象做一些初始化之类的事情。
为什么对象数组需要默认构造函数?你应该这样想,对象数组怎么实现对数组中的成员初始化。假如类A有构造函数A(int,char,double),那么我们在定义一个对象的时候可以A a(i,c,d);这样来对对象a进行初始化,可是,对象数组没办法实现,所以需要一个默认的构造函数,不带参数的构造函数与定义。

自己没写构造函数的话,初始化一般是乱码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yunxiaoxue027
2013-08-08 · 超过23用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:55.1万
展开全部
其实上面说的都不错啊,你建立的对象数组,表示的意思是什么?是不是一组对象的数组,实质上是一个数组,数组元素是类的对象,例如Circle类的cArray数组:Circle cArray[10];表示的是建立了一个数组,数组元素的每个对象都是Circle类的对象啊,既然是构建了Circle类的对象,那必须要用到类的构造函数的啊,默认的构造函数,和你构建的类有关系,不是什么都不做啊,是完成某些初始化变量的。比如说
class Circle
{
private: int i ,j;
public:
Circle(){i=0;j=0;}
};
假如我构造的上面说的Circle cArray[10];表示的就是数组中每个对象都使用Circle(){i=0;j=0;}来初始化变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿四哥vlog
2021-03-23 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:28.1万
展开全部

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式