欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C++] 类和对象(中) - 上一页 - II.构造函数

最编程 2024-07-17 14:07:30
...

1、构造函数基本概念

构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个成员都要初始化,并且在对象整个生命周期内只调用一次

2、构造函数的特性

构造函数是特殊的成员函数,主要任务就是初始化对象
(1)函数名与类名相同
(2)无返回值
(3)对象实例化时编译器自动调用
(4)可以重载

class Date
{
public:
	//无参构造函数
	Date()
	{}
	//带参构造函数
	Date(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}
private:
	int _year;
	int _month;
	int _day;
};

无参调用不用加括号:

//无参调用
Date d1;
//有参调用
Date d2(2024,6,22);

(5)如果类中没有显式定义构造函数,则编译器会自动生成一个无参的默认构造函数,如果有显式定义,编译器将不再生成

class Date
{
public:
	//无参构造函数
	Date()
	{}
private:
	int _year;
	int _month;
	int _day;
};

在这里插入图片描述
由编译器自己生成:
在这里插入图片描述
编译器会自动生成一个无参的默认构造函数,初始化给的是随机值
(6)行文至此有人会觉得编译器给的无参的默认构造函数很垃圾,初始化给的是随机值,没有什么意义,他对于自定义类型来说是有很大的意义的,它可以调用自定义类型的默认构造函数

class Time
{
public:
	Time()
	{
		cout << "Time()" << endl;
	}
private:
	int _hour;
	int _minute;
	int _second;
};
class Date
{
private:
	int _year;
	int _month;
	int _day;

	Time _t;
};
int main()
{
	Date d;
	return 0;
}

在这里插入图片描述

内置成员变量在类中声明时可以给默认值

class Date
{
private:
	int _year = 1970;
	int _month = 1;
	int _day = 1;
};
int main()
{
	Date d;
	return 0;
}

在这里插入图片描述
(7)无参的构造函数、全缺省的构造函数、不写而编译器自动生成的构造函数都叫默认构造函数

全缺省:

class Date
{
public:
	Date(int year = 1970, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date d;
	return 0;
}

在这里插入图片描述

推荐阅读