• 复制构造函数和默认构造函数的调用


      C++ Primer 第四版,第619页:

      Panda ying_yang("ying_yang");  //create a Panda object

      Panda ling_ling = ying_yang       //uses copy constructor

    起初对于第二个语句调用复制构造函数很诧异,感觉应当调用赋值操作符函数。其实不然,请看如下代码:

    代码
    #include <iostream>
    using namespace std;

    class base{
    public:
        
    base() : i(0)
        {
            cout 
    << "Default construction" << endl;
        }
        
    base(const base& rhs): i(rhs.i)
        {
            cout 
    << "copy construction" << endl;
        }
        
        
    operator=(const base& rhs)
        {
            i 
    = rhs.i;
            cout 
    << "复制操作符" << endl;
        }

    private:
        
    int i;
    };

    int main()
    {
        
    base b;
        
    base b1 = b;
        
    base b2;
        b2 
    = b;
    }

    运行结果:

    说明,关于Panda ling_ling = ying_yang; 调用的是复制构造函数,因为这个语句执行的时候,ling_ling对象还没有被创建,被初始化,不能执行赋值操作符,所以必须执行复制构造函数,创建对象。

      另外,一旦一个类定义了一个构造函数,那么编译器就不会为之合成合成的默认构造函数了。

  • 相关阅读:
    Android进阶篇软件下载及安装
    Android进阶篇访问Https链接
    Android进阶篇时间日期工具类
    Android进阶篇左右滑屏
    java:环境变量设置
    Android进阶篇录音
    Android进阶篇图片选择功能
    Android基础篇异步获取网络图片
    java进阶篇解压缩zip rar文件
    Android进阶篇Sqlite使用(一)
  • 原文地址:https://www.cnblogs.com/younes/p/1630589.html
Copyright © 2020-2023  润新知