C++在类构造函数初始化数组

就拿下面这段程序来说吧,为什么在给数组monthday[13]初始化时,提示“错误:应输入表达式”,但以前不把它定义成类,直接写在main函数里,就没问题啊,这是什么原因呢?
#include<iostream>
using namespace std;
class CalDate
{
private:
int monthday[13];
public:
CalDate();
};
CalDate::CalDate()
{
monthday[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
//定义闰年每个月的天数,分别保存为monthdayr[1]至monthdayr[12]中
}

monthday[13]你这里 不明显就是monthday[13] = 后面那个值吗?
数组只有前面声明定义一起的时候才能 像你那么定义
monthday[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
这句话等于是给monthday第13号赋值~ 当然是错的~
在构造函数里
这样只能一个一个定义了~
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-28
monthday[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
这样的写法只能在定义数组时使用,你已经定义好了数组,
你在这样写“monthday[13]“就变成一个数组里面的元素了,而不代表数组,而且还是越界的元素。。汗。你写 monthday[13] = 1;会编译成功,但是运行会出错。因为他是越界的。。汗。
即使你在main函数里先定义一个数组,在这样赋值。。那都是错误的,不可能是对的。
你只能白数组元素一个一个的赋值了,不能这样写了
相似回答