gpt4 book ai didi

c++ - 赋值运算符重载

转载 作者:行者123 更新时间:2023-11-28 00:25:38 31 4
gpt4 key购买 nike

我的类已分配给 string 运算符。

class turbo
{
public:
operator string (void) {printf("assignment to string operator\n");return "bla2";}
};

赋值操作工作得很好:

turbo t;
string s;
s=t;

而且我在输出中有 "assignment to string operator"

然后我决定为 turbo 添加另一个赋值运算符

class turbo
{
public:
operator string (void) {printf("assignment to string operator\n");return "bla";}
operator turbo (void) {printf("assignment to turbo operator\n");return *this;}
};

但是下面的代码没有调用 turbo 赋值运算符。

turbo t;
turbo tt ;
tt=t;

为什么?

我知道我可以重载 = 运算符,但我希望运算符 turbo 也能工作,因为 string 一个正在运行。

最佳答案

您不是在重载赋值运算符,而是在重载转换运算符。因此在发生转换时会调用它们。

参见 c++: cast operator vs. assign operator vs. conversion constructor priority

关于c++ - 赋值运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263128/

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