2

次のコードは、コピーコンストラクターを呼び出していません。

struct X
{
   int x;
   X(int num)
   {
      x = num;
      std::cout << "ctor" << std::endl;
   }
   X(const X& other)
   {
      std::cout << "copy ctor" << std::endl;
   }
};

int main(int argc, _TCHAR* argv[])
{
   X* x = new X(3);
   X* y(x);
}

出力:

ctor

コピーコンストラクターのエリジオンですか?

4

1 に答える 1

9

コード

X* x = new X(3);
X* y(x);

と同じではありません

X x(3);
X* y = new X(x);

オブジェクトをコピーするのではなく、ポインタをコピーします。の後X* y(x);、両方のポインタが同じオブジェクトを指します。

于 2012-05-15T06:53:02.027 に答える