C++ 关于成员函数构造函数的问题!

我有以下疑惑,请大家解答:1、为成员变量赋初值,不一定非得通过构造函数,通过普通的成员函数也可以赋初值。是这样吗?2、在类体内不允许对所定义的数据成员进行初始化。比如:c... 我有以下疑惑,请大家解答:

1、为成员变量赋初值,不一定非得通过构造函数,通过普通的成员函数也可以赋初值。是这样吗?

2、在类体内不允许对所定义的数据成员进行初始化。比如:
class Date
{
private:
int year(2002); //这是错误的!
};
但是,以下示例可以对成员变量进行初始化,这是为什么?
class Date
{
int month;
int day;
int year;
Date(int y = 2002);year(y)
{
month = 2;
day = 1;
}
};

3、关于默认构造函数,定义是:调用时不必提供参数的构造函数,它的参数列表或者为空,或者它的所有参数都具有默认值。这句话是什么意思?
以以下代码为例:
class Date
{
int year;
Date(int y = 2000):year(y)
{
year = y;
}
};
如果没有指定成员变量的初始值,在主函数中就必须Date date(2000);这样就不叫默认构造函数了。但是以上例子已经在函数定义的时候指定了year的初始值,所以创建对象时是Date date;可以这样理解吗?

请各位指出并解答,谢谢!
如果不通过构造函数初始化,通过其它函数对数据成员进行初始化可以吗?
展开
 我来答
猪头或火宝宝
2010-07-24 · TA获得超过2758个赞
知道小有建树答主
回答量:1001
采纳率:0%
帮助的人:1553万
展开全部
1.是的,对数据成员的初始化可以通过其函数成员,但系统在没有构造函数的情况下就会自动调用默认的构造函数,构造函数是专门进行初始化的。别的函数有别的函数的用途。

2.类的数据成员在定义时是不允许初始化的,初始化是通过构造函数的 。
class Date
{
int month;
int day;
int year;
Date(int y = 2002);year(y)
{
month = 2;
day = 1;
}
};

其初始化是通过构造函数的,当然可以啦!!!

3.以搂住给的题为例:

class Date
{
int year;
Date(int y = 2000):year(y)
{
year = y;
}
};

类date的构造函数是自己定义的,不是默认的构造函数要是楼主没有定义的构造函数:比如;
class Date
{
int month;
int day;
int year;
,,,,,,,,
};
其就没有自己定义的构造函数,系统为为之生成一个默认的构造函数,
系统就会自动调用默认胡构造函数进行初始化,楼主问“它的参数列表或者为空,或者它的所有参数都具有默认值。这句话是什么意思?”就是month day yesr 的值可能都是0或是其他的数。

不理解的话加我我们交流一下!!!530910067

可以的啊!!!!
gamespy1991
2010-07-24 · TA获得超过1262个赞
知道小有建树答主
回答量:1636
采纳率:0%
帮助的人:1232万
展开全部
1.对。成员函数都能给成员变量赋值。至于是不是初值看你理解了。
2.代码有错。
3.可以这么理解。默认构造函数一般没有参数,或参数有默认值

其实成员初始化就是一个赋值的过程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
100duman
2010-07-25 · TA获得超过966个赞
知道小有建树答主
回答量:1014
采纳率:100%
帮助的人:273万
展开全部
楼主的理解没有问题啊,其实程序设计重要的就是要多写程序调试,结果说明一切
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式