前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyC++59,默认构造函数

EasyC++59,默认构造函数

作者头像
TechFlow-承志
发布2022-08-26 17:24:19
3540
发布2022-08-26 17:24:19
举报
文章被收录于专栏:TechFlow

作者 | 梁唐

大家好,我是梁唐。

这是EasyC++系列的第59篇,默认构造函数。

默认构造函数

上一篇文章当中介绍的是显式构造函数,也就是说我们需要传入值来对类的成员变量进行初始化。

但也有一些情况,我们可能并不需要传入值进行初始化,或者有一些其他的逻辑。针对这种情况,C++提供了默认构造函数的功能。所谓默认构造函数,也就是在没有提供显式的初始值时,用来创建对象的构造函数。

默认构造函数非常简单,还是以之前的Stock类为例:

代码语言:javascript
复制
Stock::Stock() {
    ...
}

如果默认构造函数里没有任何逻辑,我们也可以把它写在类声明里:

代码语言:javascript
复制
class Stock {
    ...
    Stock() {}
};
#endif

C++当中有一个很奇怪的设定,当一个类我们没有提供任何构造函数时,C++会默认赋予它一个默认构造函数。但当我们一旦实现了构造函数之后,C++则不会进行如此操作。意味着对于定义了构造函数的类来说,想要使用默认构造函数,必须由程序员手动定义。

有了默认构造函数之后,我们才可以直接声明类的实例:

代码语言:javascript
复制
Stock stock1;

如果Stock类没有默认构造函数,那么上述的语句会报错。

实现默认构造函数,除了上述那样手动创建一个没有任何参数的构造函数之外,还可以将已有的构造函数的所有参数都设置默认值。

代码语言:javascript
复制
Stock(const string &co = "Error", int n = 0, double pr = 0.0);

由于只能有一个默认构造函数,所以不要同时采用这两种方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认构造函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档