关于构造函数的认识:在建立一个对象时,常常需要做某些初始化工作,例如如何给数据成员赋初值。如果一个数据成员未被赋值,则他的值是不可预知的,因为系统在为它分配内存时,保留了这些存储单元的原状,这就成为了数据成员的初始值。这种情况显然是与人们的要求不相符的,对象是一个实体,它反映了客观事物的属性,是应该有确定值的。
但是数据成员是不能在声明类时初始化
如例1、
class Data{
int year=2;
int month=12;
int day=31;
};
为什么不能在不能在声明类时对数据成员初始化?
因为类并不是一个实体,而是一种抽象的数据类型,并不占存储空间,显然无法容纳数据。
如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化。
例2、
class Data{
public:
int year=2;
int month=12;
int day=31;
};
构造函数的作用:构造函数是一种特殊的成员函数,与其他成员函数不同。不需要用户来调用它,而是在创建类对象时,由编译器自动调用。构造函数的名字与类名相同,而不能由用户任意命名,以便编译系统能识别它并把它作为构造函数处理 。它不具有任何类型,也没有返回值。构造函数的功能是由用户自己定义的,用户根据初始化的要求设计函数体和函数参数。
例3、
class Time
{
public:
Time()
{
hour = 0;
minute = 0;
second = 0;
}
void setTime();
void showTime();
private:
int hour;
int minute;
int second;
};
int main()
{
Time t;
t.setTime();
t.showTime();
system("pause");
return 0;
}
void Time::setTime()
{
cin >> hour;
cin >> minute;
cin >> second;
}
void Time::showTime()
{
cout << hour <<