0

重複の可能性:
この場合、コピー コンストラクターが呼び出されないのはなぜですか?
コピー省略とは何ですか? また、コピー アンド スワップ イディオムをどのように最適化しますか?

私は、ctors とオペレーターのオーバーロードを理解しようとしていじっていました。

#include <iostream>
using namespace std;

class number {
   int n;
 public:
   number(int i=0):n(i)     {       cout<<"in ctor"<<endl;    }
    ~number()               {       cout<<"in dtor"<<endl;    }
   number(const number& obj):n(obj.n)   {
                                    cout<<"in copy ctor"<<endl;   }
   number operator+(const number & obj)  {
                                     return number(n+obj.n);   }

    number operator=(const number &rhs)  {
               n = rhs.n;        cout<<"in assignemnt opr"<<endl;    }
   void disp() {cout<<n<<endl;}
};

int main()
{
        number one(1),two(2);
        number three =one + two; //was expecting copy ctor being called here
        three.disp();
}

上記のコードを実行すると、次の出力が得られました

ここに画像の説明を入力

オーバーロードされた演算子でonetwoun-namedobject の3 つのコンストラクターが呼び出されることは理解しています。誰か説明してくれませんか。ありがとう。+three

4

0 に答える 0