1、概念
构造函数是一个特殊的成员函数,名字与类名相同,创建类型对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期中只调用一次。
2、特性
构造函数并非开空间创建对象,而是初始化对象。
其特征如下:
1、函数名与类名相同;
2、无返回值;
3、对象实例化时编译器自动调用对应的构造函数;
4、构造函数可以重载;
class Date
{
public:
Date() 无参构造函数
{
}
Date(int year,int month,int day) 带参构造函数
{
}
}
5、如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义,编译器将不再生成。
3、用处
C++将类型分为内置类型与自定义类型。内置类型就是语言提供的数据类型,如int、char,自定义类型就是自己定义的类型,如struct。编译器生成的默认构造函数不会处理内置类型,对自定义类型调用其自己的默认构造。
#include <iostream>
using namespace std;
class Time
{
public:
Time()
{
hour = 18;
minute = 42;
second = 30;
}
int hour;
int minute;
int second;
};
class Date
{
public:
Date()
{
year = 2024;
month = 4;
day = 15;
}
void print()
{
cout << year << endl;
cout << month << endl;
cout << day << endl;
cout << t.hour << endl;
cout << t.minute << endl;
cout << t.second << endl;
}
private:
int year;
int month;
int day;
Time t;
};
int main()
{
Date date;
date.print();
}
如图,我们创建了Date类型的变量date,在创建的同时,他会自动调用Date的构造函数Date(),对内置类型进行初始化,而对于自定义类型t,会调用其构造函数,即Time(),进行初始化,最终效果为:
如果我们没有创建Time的构造函数。则编译器将生成其默认构造函数。最终效果为: