zoukankan      html  css  js  c++  java
  • 45、什么情况下会调用拷贝构造函数

    1.用类的一个实例化对象去初始化另一个对象的时候

    2.函数的参数是类的对象时(非引用传递)

    3.函数的返回值是函数体内局部对象的类的对象时 ,此时虽然发生(Named return Value优化)NRV 优化,但是由于返回方式是值传递,所以会在返回值的地方调用拷贝构造函数

    另:第三种情况在Linux g++ 下则不会发生拷贝构造函数,不仅如此即使返回局部对象的引用,依然不会发生拷贝构造函数

    总结就是:即使发生NRV优化的情况下,Linux+ g++的环境是不管值返回方式还是引用方式返回的方式都不会发生拷贝构造函数,而Windows + VS2019在值返回的情况下发生拷贝构造函数,引用返回方 式则不发生拷贝构造函数。

    在c++编译器发生NRV优化,如果是引用返回的形式则不会调用拷贝构造函数,如果是值传递的方式依 然会发生拷贝构造函数。

  • 相关阅读:
    ZOJ 1217 eight
    COJ 1080 A simple maze
    八数码(双向广搜)
    HDOJ 1043 eight
    [HDOJ] 小兔的棋盘
    ZOJ 2110 Tempter of the Bone
    POJ 2406 Power Strings
    [HDOJ] goagain的超级数列
    COJ 1216 异或最大值
    八数码(IDA*)
  • 原文地址:https://www.cnblogs.com/crbhf/p/15086997.html
Copyright © 2011-2022 走看看