zoukankan      html  css  js  c++  java
  • 理解C++中拷贝构造函数

       拷贝构造函数的功能是用一个已有的对象来初始化一个被创建的同样对象,是一种特殊的构造函数,具有一般构造函数的所有特性,当创建一个新对象的时候系统会自动调用它;其形参是本类对象的引用,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。

     用户可以根据实际需要定义特定的拷贝构造函数,以实现同类对象之间数据成员的传递。如果用户没有声明类的拷贝构造函数,系统会自动生成一个默认的拷贝构造函数,它的功能就是把初始对象的每个数据成员的值复制到新建立的对象当中。它定义为:类名(类名&对象名)

    class dog
    {
    private:
    
        int age;
        float weight;
        char *color;
    
    public:
        dog();
        dog(dog&);
        void play();
        void hunt();
    
    };
    
    dog::dog(dog&other)
    {
       age   = other.age;
       weight = other.weight;
       color  = other.color;
    }
    

      

       在以下四种情况下会调用拷贝构造函数:

      (1)用类的一个对象去初始化另一个对象:

        dog dog1;

      dog dog2(dog1);

      (2)用类的一个对象去初始化另一个对象的另一种形式:

      dog dog2 = dog1;

      (3) 对象作为参数传递,调用拷贝构造函数:

      f(dog a){}

        dog b;

           f(b);

      (4)如果函数的返回值是类的对象,函数调用返回时,调用拷贝构造函数

      dog f{

           dog a;

           .....

          return a;

      }

          dog b;

          b = f();

    // 拷贝构造函数分为深拷贝和浅拷贝

    浅拷贝只是复制对象的空间而不复制资源,深拷贝需要同时复制对象空间和资源。

  • 相关阅读:
    CodeForces 522B 手速题
    mybatis多数据源报错
    as依赖解决报错
    As 400错
    maven直接饮用jar包的写法
    测试一下多线程同时往list中添加元素会不会出问题
    jmeter中判断数据库是否存在相应的记录
    jmeter打开图形化界面时指定代理
    wz
    初阳胜阴
  • 原文地址:https://www.cnblogs.com/weekbo/p/8981418.html
Copyright © 2011-2022 走看看