构造函数
在声明一个对象后,紧接着要给对象初始化
对象初始化实质上就是对所有数据成员赋值
如果对象中某个数据成员未赋值,则该数据成员的值不确定,那么该对象的值不完整
语法格式
<类名>(<参数表>)
{<函数体>}
- 构造函数的函数名必须与类名相同
- 构造函数没有返回值
- 其功能是将对象中的所有数据成员进行初始化,一般由一系类赋值语句构成
- 由系统在声明对象时自动调用
构造函数
- 构造函数的作用是在对象被创建时使用特定的值构造对象,即把对象初始化为一个特定的状态。
- 构造函数是一种特殊的成员函数,它不需用户调用,而是在 对象创建时由系统自动调用。
- 如果程序中未声明,则系统自动产生一个默认形式的构 造函数,用于创建对象,默认构造函数形式:
类名::类名(){ }
默认构造函数是一个空函数 - 允许为内联函数、重载函数、带默认形参值的函数
- 特殊性质:
函数名与类名相同
没有返回值
声明为公有函数public
为类Date建立构造函数
#include <iostream>
using namespace std;
class Date
{
public:
Date(); // 无参构造函数1
Date(int y,int m,int d); // 构造函数2
void setDate(int y,int m,int d);
void showDate();
private:
int year, month, day;
};
Date::Date() //无参构造函数的实现
{
year=0;
month=0;
day=0;
}
Date::Date(int y,int m,int d) // 构造函数的实现
{
year=y;
month=m;
day=d;
}
void Date::setDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void Date::showDate()
{
cout<<year<<"."<<month<<"."<<day<<endl;
}
int main()
{
Date a_date(2014,3,25);
Date b_date;
a_date.showDate();
b_date.showDate();
return 0;
}
重载构造函数
一个类中允许定义多个构造函数
在声明对象时自动选择执行某个构造函数
利用构造函数创建对象时,通过指针和new运算符动态成立对象,用delete运算符撤销对象
语法形式
类名*指针变量=new类名[(实参表)]
new 运算符动态分配内存后,返回指向新对象的指针,需要定义一个指向该类对象的指针变量存放新对象指针,以便对其访问
Date *d1=new Date(1998,4,28); //创建对象(*date1)
引用:
(*d1). setDate(2020,3,10);
d1->setDate(2020,3,10);
构造函数的初始化列表
构造函数初始化成员两种方法