【19计科1】C++默认构造函数知识点

用户头像
来自上海海洋大学-李家豪发布于:2020-04-27 21:53:18
默认构造函数(default constructor):类通过一个特殊的构造函数来控制默认初始化过程,这个函数称为默认构造函数。默认构造函数无须任何实参。 简单来说,默认构造函数就是在调用时不需要显示地传入实参的构造函数 合成的默认构造函数 如果我们的类没有显示地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数。这个由编译器创建的构造函数又称为合成的默认构造函数(synthesized default constructor) 合成的默认构造函数只适合非常简单的类,有三个原因: 只有当类没有声明任何构造函数的时,编译器才会自动地生成默认构造函数。也就是说,当你定义了其他的构造函数时,除非我们再定义一个默认构造函数,否则类将没有默认构造函数。 对于某些类来说,合成的默认构造函数可能执行错误的操作。如果类包含有内置类型或者复合类型的成员,则只有当这些成员全都被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数。 有的时候编译器不能为某些类合成默认的构造函数。例如: 类中包含一个其他类类型的成员且这个成员的类型没有默认构造函数,那么编译器将无法初始化该成员。这种时候,我们必须自定义默认构造函数,否则该类将没有任何可用的默认构造函数。 我们可以使用 = default 要求编译器生成合成的版本(可以对默认构造函数和拷贝控制成员使用)。在新标准下,我们可以定义删除的函数(deleted function)——使用 = delete 。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何方式来使用它们。 其他。
点赞 (1) 回复
1F 用户头像
来自上海海洋大学-王志成发布于:2020-07-20 17:37:59

学到了学到了

加载更多
点击图片
取消
回复
2F 用户头像
来自上海海洋大学-张雨晴发布于:2020-07-20 17:39:15
对于某些类来说,合成的默认构造函数可能执行错误的操作。如果类包含有内置类型或者复合类型的成员,则只有当这些成员全都被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数。
加载更多
点击图片
取消
回复
3F 用户头像
来自上海海洋大学-张雨晴发布于:2020-07-20 18:07:23
类中包含一个其他类类型的成员且这个成员的类型没有默认构造函数,那么编译器将无法初始化该成员。这种时候,我们必须自定义默认构造函数,否则该类将没有任何可用的默认构造函数。 我们可以使用 = default 要求编译器生成合成的版本(可以对默认构造函数和拷贝控制成员使用)。在新标准下,我们可以定义删除的函数(deleted function)——使用 = delete 。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何方式来使用它们。
加载更多
点击图片
取消
回复
4F 用户头像
来自上海海洋大学-姚慧杰发布于:2020-07-20 18:09:06

了解了

加载更多
点击图片
取消
回复
5F 用户头像
来自上海海洋大学-曾硕星发布于:2020-07-20 18:26:35
了解
加载更多
点击图片
取消
回复
6F 用户头像
来自上海海洋大学-陈泓儒发布于:2020-07-20 18:34:08

讲得很好。seku

加载更多
点击图片
取消
回复
7F 用户头像
来自上海海洋大学-孙杨博发布于:2020-07-20 18:36:45

理解透彻!

加载更多
点击图片
取消
回复
8F 用户头像
来自上海海洋大学-张海发布于:2020-07-20 18:45:16

学习了

加载更多
点击图片
取消
回复
9F 用户头像
来自上海海洋大学-李佳杭发布于:2020-07-20 20:41:47
感谢分享
加载更多
点击图片
取消
回复
10F 用户头像
来自上海海洋大学-生蕙语发布于:2020-07-20 20:46:58
学到了
加载更多
点击图片
取消
回复
11F 用户头像
来自上海海洋大学-刘犇发布于:2020-07-25 15:44:53

感谢分享

加载更多
点击图片
取消
回复
发布回复
点击图片