zoukankan      html  css  js  c++  java
  • 复制构造函数和默认构造函数的调用

      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对象还没有被创建,被初始化,不能执行赋值操作符,所以必须执行复制构造函数,创建对象。

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

  • 相关阅读:
    CSDN工具-CSDN信息查看
    Plaintext Encryption
    摆脱任何工具-简单代码让文件夹加密
    pyquery解析库
    beautifulsoup解析库
    lxml beautiful pyquery三种解析库
    python的enumerate lambda isinstance filter函数
    python字符串的split replace strip
    整理github总结
    简单python爬虫实例
  • 原文地址:https://www.cnblogs.com/younes/p/1630589.html
Copyright © 2011-2022 走看看