开发者社区> 问答> 正文

C++中,哪些情况需要自定义拷贝控制操作?

C++中,有哪些情况必须要自定义拷贝控制操作?
自己写类时很多时候不清楚到底用不用得着自定义那些拷贝控制,
望大神指路。

展开
收起
a123456678 2016-03-06 10:07:57 1900 0
1 条回答
写回答
取消 提交回答
  • 你可以除了构造函数和析构函数外,另外两个可选拷贝构造和赋值,这两个可以实现其中一个,另一个来调用。
    如果没有拷贝构造函数或析构函数,系统自动实现按位赋值,这样,如果存在指针会导致两个变量指向同一地方,
    修改其中一个就全部修改,或者删除一个,另一个也变成了空指针或野指针。
    所以你需要做拷贝构造或赋值,比如你重载了赋值,那么可以在拷贝构造中调用赋值,直接new一个新变量后赋值。
    个人认为,一般是涉及到根据一个实例去初始化另一个实例的时候,需要自定义一个拷贝构造函数(当然系统这时候一般也会默认一个)。
    比如类 Class Test;
    如果有
    Test a;
    Test b = a; 拷贝构造函数
    void function(Test t); 调用这个函数的时候,拷贝构造函数
    Test function2(); 调用这个函数的时候 return一个Test实例,拷贝构造函数。

    2019-07-17 18:54:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载