一,构造函数介绍
1.构造函数:
1.是一种特殊的成员函数,与其他成员函数不同,不需要用户调用它。
2.在建立对象时,系统会自动调用。同时:系统根据类的属性大小为该对象分配储存单元。
注意:
1.构造函数与类名同名。
2.不具有返回值。
3.没有返回值。
2.构造函数分为有参构造函数和无参构造函数
2.1无参构造:
/*class 类名(){}*/
class Time
{
Time(){} //无参构造
}
用户没有定义构造函数(有参构造或无参构造)时,C++系统会自动生成一个构造函数,该构造函数的函数体是空的,也没有参数。
2.2有参构造:
/*class 类名(){}*/
class Time
{
public:
int m_hour ;
int m_mintue ;
int m_sec ;
Time(){} //无参构造
Time(int hour,int mintue,int sec){}//有参构造
}
class 类名(类型1 形参1,类型2 形参 2,…){}
如果用户建立了有参构造函数,如果没有建立无参构造函数,系统不会自动生成无参构造,需要用户自动定义。
二,构造函数作用
1.对对象的初始化。
2.一个类对象初始化类一个类对象
Time t1 ; //建立对象t1,同时调用构造函数t1.Time()
Tim1 t2 = t1; //建立对象t2,并用t1初始化t2
1. 对象初始化:
由于 类 不是个实体,而是一个抽象类型。不占用空间,因此无法存容数据。
错误代码:
class Time
{
int hour = 0;
int mintue = 0;
int sec = 0;
};
正确代码:
class Time
{
int hour ;
int mintue ;
int sec ;
};
Time t1 = {14,56,30};
2,用无参构造函数初始化
class Time
{
public:
int hour ;
int mintue ;
int sec ;
Time()
{
hour = 0;
mintue = 0;
sec = 0;
}
};
3,用带参构造函数初始化
class Time
{
public:
int m_hour ;
int m_mintue ;
int m_sec ;
Time(int hour ,int mintue , int sec)
{
m_hour = hour;
m_mintue = mintue ;
m_sec = sec;
}
};
4,使用默认参数的构造函数
写法一:
class Time
{
public:
int m_hour ;
int m_mintue ;
int m_sec ;
Time(int hour = 10 ,int mintue = 20 , int sec = 1)
{
m_hour = hour;
m_mintue = mintue ;
m_sec = sec;
}
};
写法二:
class Time
{
public:
int m_hour ;
int m_mintue ;
int m_sec ;
Time(int hour,int mintue, int sec):hour(h),mintue(m),sec(s)
{
}
};