Hello everybody!今天我们来聊一聊构造函数的用法和一些基本性质。内容比较多,我打算分两篇文章讲完!
希望大家在看完我的文章后能够有所收获!
1.构造函数的定义
构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但构造函数的主要任务并不是开空间创建对象,而是初始化对象。
1.1构造函数的性质:
1.函数名与类名相同。
2.无返回值。(函数的返回值不写void,而是啥都不写)
3.对象实例化时,编译器自动调用对应的构造函数。
4.构造函数可以重载。
这是一个简单的程序,其中的Date函数就是构造函数,在对象实例化时会自动调用并输出结果。当然也可以写两个构造函数,它们之间构成重载也完全没有问题。
2.默认构造函数
无参的构造函数和全缺省构造函数都称为默认构造函数,并且默认构造函数只能有一个。注意:无参的构造函数,全缺省构造函数,我们没写编译器默认生成的构造函数,都可以认为是默认构造函数。
总的来说就是:不传参调用的构造函数都可以叫做默认构造函数。
3.构造函数的特性
c++11前,c++语法规定:
1.对象实例化时必须调用构造函数,如果没有构造函数可调则会报错。
2.构造函数是默认成员函数,如果我们不写,编译器会默认生成一个并在对象实例化时自动调用。
3.默认生成的构造函数对于内置类型不做处理,对于自定义类型回去调用它的默认构造函数。
c++11补充:允许自定义类型在声明的地方给缺省值。
如上图,没有可调用的构造函数,会报错。
如上图:对象实例化d1后,默认生成的构造函数对自定义类型没有处理,对a1来说回去调用它的默认构造函数。
给了缺省值后,默认构造函数就会对自定义类型做处理。
4.结语
构造函数很复杂,我就先介绍这么多,后续我会将剩下的知识讲完。也请大家持续关注的更新的文章呦!