
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;可以这样理解吗?
请各位指出并解答,谢谢!
如果不通过构造函数初始化,通过其它函数对数据成员进行初始化可以吗? 展开
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;可以这样理解吗?
请各位指出并解答,谢谢!
如果不通过构造函数初始化,通过其它函数对数据成员进行初始化可以吗? 展开
3个回答
展开全部
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
可以的啊!!!!
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
可以的啊!!!!
展开全部
1.对。成员函数都能给成员变量赋值。至于是不是初值看你理解了。
2.代码有错。
3.可以这么理解。默认构造函数一般没有参数,或参数有默认值
其实成员初始化就是一个赋值的过程
2.代码有错。
3.可以这么理解。默认构造函数一般没有参数,或参数有默认值
其实成员初始化就是一个赋值的过程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主的理解没有问题啊,其实程序设计重要的就是要多写程序调试,结果说明一切
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询