gpt4 book ai didi

c++ - 当类成员是引用时,无法生成默认赋值运算符?(在 C++ 中)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:41 25 4
gpt4 key购买 nike

这是我的代码:

class NO {
public:
NO(std::string& name):nameValue(name){};

private:
std::string& nameValue; // this is now a reference

};

int main(){

int b=10,c=20;
int& d=b;
d=c;

std::string p="alpha", q="beta";

NO x(p), y(q);
x=y;

return 0;

}

我得到错误:

"non-static reference member ‘std::string& NO::nameValue’, can’t use default assignment operator"

当我可以用内置类型重新分配对象时,为什么我不能用引用成员重新分配对象?

谢谢

最佳答案

一个引用可以被初始化,但不能赋值给。一旦引用被初始化,只要它存在,它就会继续引用同一个对象。如果您没有定义赋值运算符,编译器将合成一个执行成员赋值的运算符,但在这种情况下这是不可能的,因此编译器不能/根本不会合成一个。

您可以自己定义赋值运算符。完全由您决定如何处理作为引用的成员。大多数时候,您只是将对象定义为不包含任何引用。

当您深入研究时,主要引用几乎肯定是用作参数。作为一个类的成员,它们通常没有意义,并且在极少数情况下它们确实有意义,该类的对象可能不应该支持赋值。

关于c++ - 当类成员是引用时,无法生成默认赋值运算符?(在 C++ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com