复制构造函数问题

Atu*_*ul 2 c++ constructor copy-constructor

我试图使用复制构造函数使用语句:

X y = X();
Run Code Online (Sandbox Code Playgroud)

但是没有调用复制构造函数.我正在使用g ++ 4.1.0.我在类中设置了X(const X&)和X(x&)构造函数.

这应该工作还是我在代码中做了一些非常基本的问题?

我的课程代码是

class A
{
 public:
  int i;

  A(int ii)
  {
   i = ii;
  }

  A(const A&)
  {
   i = 5;
  }

  A(A&)
  {
   i = -1;
  }

  A()
  {
   i = 5000;
  }
};
Run Code Online (Sandbox Code Playgroud)

当我使用A a = A();或 使用它时 A a = A(100);,它不起作用,但当我使用它A a(b);A a = b;它工作正常.

我错过了什么?我看到根据维基百科,它应该工作,但它不适用于我的情况:(.

提前感谢您的所有答案和评论.

Jam*_*lis 13

在某些情况下,允许编译器忽略对复制构造函数的调用.从临时文件初始化对象就是其中之一.在这种情况下,临时只是就地构造而不是构造临时,然后将其复制到命名对象.

您可以通过构造命名对象然后复制它来调用复制构造函数:

X x;
X y = x;
Run Code Online (Sandbox Code Playgroud)