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)