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


    区别

    调用拷贝构造

    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;
    };
    
  • 相关阅读:
    LeetCode:数组(三)
    LeetCode:数组(二)
    LeetCode:数组(一)
    python实现栈的基本操作
    python基本内置函数
    Pycharm的常见Debug调试方法(持续更新)
    计算广告系列(一)-基本概念整理
    es与solr对比
    数据库优化
    java线程池
  • 原文地址:https://www.cnblogs.com/xiongyungang/p/11361438.html
Copyright © 2020-2023  润新知