zoukankan      html  css  js  c++  java
  • C++复制构造函数

    在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
    1) 一个对象作为函数参数,以值传递的方式传入函数体;
    2) 一个对象作为函数返回值,以值传递的方式从函数返回;
    3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);

    1. 对象以值传递的方式传入函数参数:

    class CExample
    {
    private:
    int a;

    public:
    //构造函数
    CExample(int b)
    {
      a = b;
      cout<<"creat: "<<a<<endl;
    }

    //拷贝构造
    CExample(const CExample& C)
    {
      a = C.a;
      cout<<"copy"<<endl;
    }
    //析构函数
    ~CExample()
    {
      cout<< "delete: "<<a<<endl;
    }

         void Show ()
    {
             cout<<a<<endl;
         }
    };

    //全局函数,传入的是对象
    void g_Fun(CExample C)
    {
    cout<<"test"<<endl;
    }

    int main()
    {
    CExample test(1);
    //传入对象
    g_Fun(test);

    return 0;
    }

    2 对象以值传递的方式从函数返回

    class CExample
    {
    private:
    int a;

    public:
    //构造函数
    CExample(int b)
    {
      a = b;
    }

    //拷贝构造
    CExample(const CExample& C)
    {
      a = C.a;
      cout<<"copy"<<endl;
    }

         void Show ()
         {
             cout<<a<<endl;
         }
    };

    //全局函数
    CExample g_Fun()
    {
    CExample temp(0);
    return temp;
    }

    int main()
    {
    g_Fun();
    return 0;
    }

    3)对象需要通过另外一个对象进行初始化

    CExample A(100);
    CExample B = A;

    // CExample B(A);

  • 相关阅读:
    Ubuntu查看端口占用情况
    在jupyter中添加新的环境
    C++指针
    C++排序:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序
    查找一:C++静态查找
    C++链式队列
    C++顺序循环队列
    C++链式栈
    C++顺序栈
    C++双向循环链表
  • 原文地址:https://www.cnblogs.com/K2154952/p/4754649.html
Copyright © 2011-2022 走看看