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

是copy-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 回答