栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 构造函数 (纯干)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 构造函数 (纯干)

构造函数是用于初始化对象的特殊成员函数,构造函数只能在类中定义,与普通成员函数的定义,传参,声明都不一样

1.函数名与类名相同

2.无返回值,声明定义不写返回类型

class Date {
public:
    //构造函数
	Date(int year,int month,int day) {
		_year = year;
		_month = month;
		_day = day;
	}
	void print() {
		printf("%d/%d/%dn", _year, _month, _day);
	}
private:
	int _year;
	int _month;
	int _day;
};

3.支持重载,缺省参数;

4.“默认构造函数”与“非默认构造函数”

默认构造函数:不需要传参的构造函数(编译器自动生成的(第七点讲),显示定义的全缺省形参,无形参)

	//默认构造函数
	Date(int year=2022, int month=5, int day=20) {
		_year = year;
		_month = month;
		_day = day;
	}

 

非默认构造函数:需要手动传参的(半缺省,不缺省)

	//非默认构造函数
	Date(int year,int month,int day) {
		_year = year;
		_month = month;
		_day = day;
	}

5.在类实例化时必须调用一个构造函数,调用非默认构造函数的语法为:类名+()这个括号是指调用函数的运算符。

	Date test(2022, 5, 20);

实例化对象时不加“()” 编译器便会自动隐式调用默认“构造函数”

	Date test;

6.一旦没有成功调用构造函数,编译器会报错,常见的情况有

加了括号但是不存在合适的“非默认构造函数”,或者时没加括号但是没有“默认构造函数”。

 错误样例:

class Date {
public:
	全缺省的默认构造函数
	Date(int year=2022, int month=5, int day=20) {
		_year = year;
		_month = month;
		_day = day;
	}
	void print() {
		printf("%d/%d/%dn", _year, _month, _day);
	}
private:
	int _year;
	int _month;
	int _day;
};
int main() {
	Date test();选择调用非默认构造函数
    /正确写法为:Date test;
	return 0;
}

小总结:在实例化对象时,必须调用构造函数,且只能在调用“默认构造函数”与“非默认构造函数”中选择,若调用失败则会报错。

 

7.若不显示定义,编译器会自动隐形一个“默认构造函数”,一旦有显示定义的构造函数,便不会再自动生成。

这个隐式生成的构造函数 对内置成员变量不做处理,对于自定义类型的成员变量,会调用它(们)的“默认构造函数”这段代码中 test会调用自动生成的构造函数,对于年月日(都是内置成员)不会处理,_year,_month,_day会是随机值对于ma 会调用它的构造函数将ma.a的值会被初始化0。

class A {
	A(int val = 0) {
		a = val;
	}
public:
	int a;
};
class Date {
public:
	//默认构造函数
	Date(int year=2022, int month=5, int day=20) {
		_year = year;
		_month = month;
		_day = day;
	}
	void print() {
		printf("%d/%d/%dn", _year, _month, _day);
	}
private:
	int _year;
	int _month;
	int _day;
	A ma;
};
int main() {
	Date test;
	return 0;
}

 

end.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号