C++中,有哪些情况必须要自定义拷贝控制操作?
自己写类时很多时候不清楚到底用不用得着自定义那些拷贝控制,
望大神指路。
你可以除了构造函数和析构函数外,另外两个可选拷贝构造和赋值,这两个可以实现其中一个,另一个来调用。
如果没有拷贝构造函数或析构函数,系统自动实现按位赋值,这样,如果存在指针会导致两个变量指向同一地方,
修改其中一个就全部修改,或者删除一个,另一个也变成了空指针或野指针。
所以你需要做拷贝构造或赋值,比如你重载了赋值,那么可以在拷贝构造中调用赋值,直接new一个新变量后赋值。
个人认为,一般是涉及到根据一个实例去初始化另一个实例的时候,需要自定义一个拷贝构造函数(当然系统这时候一般也会默认一个)。
比如类 Class Test;
如果有
Test a;
Test b = a; 拷贝构造函数
void function(Test t); 调用这个函数的时候,拷贝构造函数
Test function2(); 调用这个函数的时候 return一个Test实例,拷贝构造函数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。