什么时候需要定义拷贝构造函数
来源:互联网 发布:游戏程序员面试 编辑:程序博客网 时间:2024/04/30 22:28
当没有定义拷贝构造函数时,对象值传递时是位拷贝,但是通常情况下,位拷贝已经能满足我们的要求,是我们不必自己定义拷贝构造函数。
但是什么时候需要自己定义呢?
像我们常练习去写一个string类时,会去写个普通构造,拷贝构造,重载赋值运算符=,因为里面有个指针变量char * pBuff,在析构函数中,一般都会将该指针置空,这样的析构就是个非空的析构函数。
如果你定义拷贝构造函数时遇到这样的错误:
no copy constructor available or copy constructor is declared 'explicit'
意味着你的拷贝构造函数的参数不是const 。
而且拷贝构造函数是不能加explicit关键字的!
何谓拷贝?在这里,即类型相同的对象才能称为“拷贝”,既然类型相同,那就不存在什么隐式转换的问题!
只有构造函数的参数类型(单一参数或多参数带有默认值)与当前类类型不同时,才有隐式转换问题。
explicit是用来防止外部非正规的拷贝构造的。要想不存在传值的隐式转换问题,就可以在变量前加上explicit 关键字。
0 0
- 什么时候需要自己定义拷贝构造函数
- 什么时候需要定义拷贝构造函数
- 什么时候需要定义拷贝构造函数
- 什么时候需要拷贝构造函数和赋值构造函数?
- 什么时候需要重载拷贝构造函数(赋值运算符)!
- 什么时候调用拷贝构造函数
- 拷贝构造函数什么时候调用?
- 拷贝构造函数什么时候调用?
- 拷贝构造函数什么时候调用?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会调用“拷贝构造函数”
- MFC string CString char wchar 相互转换
- Caffe均值文件mean.binaryproto转mean.npy
- RBAC权限管理
- weblogic部署
- Intellij IDEA同时打开多个项目
- 什么时候需要定义拷贝构造函数
- APP开发实战145-Enum枚举变量的处理
- 【Windows】如何关闭Windows Defender?
- Technical Artist的不归路 —— 创建游戏世界前团队交流之我见
- Android 5.0 源码 USB插拔事件监听(代码摘自google)
- CentOS 7安装Gnome GUI 图形界面
- Ceph实战入门系列(一)——三节点Ceph集群的安装与部署
- Smartbi的安装部署
- oracle on commit delete rows 和on commit preserve rows的区别