构造
构造函数(初始化函数):
构造函数是对对象的初始化
数据成员不能在声明时进行初始化
带参数的构造函数:
构造函数名(类型1,形参1,类型2,形参2,.....)
类名 对象名(实参1,实参2,......);
初始化表对数据成员进行初始化:
Data::Data(int year,int month,int day):year(_year),month(_month),day(_day);{}
构造函数的重载:
在调用构造函数时,不必给出实参的构造函数称为默认构造函数(缺省构造函数)
一个类之能有一个默认构造函数
#include<iostream>
using namespace std;
class Data
{
public:
//Data(int year = 1999, int month = 12, int day = 20);
Data();
Data(int year, int month, int day)
:_year(year)
,_month(month)
,_day(day)
{}
~Data()
{
cout << "~Data" << endl;
}
void display()
{
cout << _year << " " << _month << " " << _day;
}
private:
int _year;
int _month;
int _day;
};
//Data::Data(int year, int month, int day)
//{
//_year = year;
//_month = month;
//_day = day;
//
//}
Data::Data()
{
_year = 1999;
_month = 10;
_day = 3;
}
int main()
{
Data d1(1998,4,20);
d1.display();
Data d2;
d2.display();
return 0;
}
析构函数:析构函数是对对象占用内存进行清理
一个类只能有一个析构函数并且不能被重载
构造函数和析构函数的调用顺序(类似于栈)
先构造后析构