我理解或至少知道为什么以下代码不起作用:
class Spambar {
public:
Spambar() {};
Spambar(Spambar& sb) {};
Spambar operator + (Spambar sb) {
Spambar new_sb;
return new_sb;
}
};
int main() {
Spambar sb1;
Spambar sb2;
Spambar sb3 = sb1 + sb2; // <<< Error: "No matching function for call to ... "
}
我想,问题在于复制构造函数需要对Spambar
实例的引用。由于没有引用但返回浅实例,因此编译失败。
那么,我该如何让它发挥作用呢?