C++ 为什么在这里调用复制构造函数? #包括 使用名称空间std; 甲级 { int x; 公众: A(INTA) { x=a; cout

C++ 为什么在这里调用复制构造函数? #包括 使用名称空间std; 甲级 { int x; 公众: A(INTA) { x=a; cout,c++,c++11,visual-c++,c++14,C++,C++11,Visual C++,C++14,因为您从赋值运算符按值返回。它应该返回一个引用: 正如@SomeProgrammerDude已经说过的,这是因为您通过值返回,而不是像通常使用赋值运算符那样通过引用返回。我想补充一点,您的赋值运算符目前是错误的: A& operator = (A &d) { ... } 请注意,对于复制构造函数,参数应该是const refa&operator=(a const&d){…}相同。您希望以其他方式复制x的值。即x=d.x; A& operator = (A &d)

因为您从赋值运算符按值返回。它应该返回一个引用:


正如@SomeProgrammerDude已经说过的,这是因为您通过值返回,而不是像通常使用赋值运算符那样通过引用返回。我想补充一点,您的赋值运算符目前是错误的:

A& operator = (A &d) { ... }

请注意,对于复制构造函数,参数应该是const ref
a&operator=(a const&d){…}
相同。您希望以其他方式复制
x
的值。即
x=d.x;
A& operator = (A &d) { ... }
A operator = (A &d)
{   
    d.x = x;
    cout << "Assignment operator called";
    return *this;
}
A& operator = (A const &d)
{   
    x = d.x;
    cout << "Assignment operator called";
    return *this;
}