大家好,我是梁唐。
默认构造函数
上一篇文章当中介绍的是显式构造函数,也就是说我们需要传入值来对类的成员变量进行初始化。
但也有一些情况,我们可能并不需要传入值进行初始化,或者有一些其他的逻辑。针对这种情况,C++提供了默认构造函数的功能。所谓默认构造函数,也就是在没有提供显式的初始值时,用来创建对象的构造函数。
默认构造函数非常简单,还是以之前的Stock类为例:
- Stock::Stock() {
-
- ...
-
- }
如果默认构造函数里没有任何逻辑,我们也可以把它写在类声明里:
- class Stock {
-
- ...
-
- Stock() {}
-
- };
-
- #endif
C++当中有一个很奇怪的设定,当一个类我们没有提供任何构造函数时,C++会默认赋予它一个默认构造函数。但当我们一旦实现了构造函数之后,C++则不会进行如此操作。意味着对于定义了构造函数的类来说,想要使用默认构造函数,必须由程序员手动定义。
有了默认构造函数之后,我们才可以直接声明类的实例:
- Stock stock1;
如果Stock类没有默认构造函数,那么上述的语句会报错。
实现默认构造函数,除了上述那样手动创建一个没有任何参数的构造函数之外,还可以将已有的构造函数的所有参数都设置默认值。
- Stock(const string &co = "Error", int n = 0, double pr = 0.0);
由于只能有一个默认构造函数,所以不要同时采用这两种方式。