首页 > 其他 > 详细

复制控制:拷贝构造、赋值操作符

时间:2019-08-16 09:26:27      阅读:75      评论:0      收藏:0      [点我收藏+]

区别

调用拷贝构造

Teacher t2 = t1;    //类类型,复制初始化时调用拷贝构造函数,直接初始化调用对应构造函数

调用赋值运算符

Teacher t2;
t2 = t1;

拷贝构造函数

单形参、且形参类型为该类类型的引用 (常const修饰)的构造函数

class Test{
public:
  Test(){
    data = 0;
  }
  Test(int d):data(d){
  }
  ~Test(){
  }

  Test(const Test &test)
   {
    data = test.data;
  }
private:
  int data;
};

如果形参为引用,调用拷贝构造函数

void func(const string &s1);    //隐式调用string拷贝构造

赋值操作符

class Test{
public:
  Test(){
    data = 0;
  }
  Test(int d):data(d){
  }
  ~Test(){
  }

  //重载=号运算符                                            
  Test& operator= (const Test &t){
    if(this != &t){    //防止自赋值
      data = t.data;
    }
    return *this;
  }
private:
  int data;
};

禁止拷贝

私有拷贝构造和赋值操作符

class Test{
public:
  Test(){
    data = 0;
  }
  Test(int d):data(d){
  }
  ~Test(){
  }
private:
  //  禁止拷贝                                         
  Test& operator= (const Test &);
  Test(const Test&);
  int data;
};

复制控制:拷贝构造、赋值操作符

原文:https://www.cnblogs.com/xiongyungang/p/11361438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!