gpt4 book ai didi

c++ - 为什么我不能在比较中使用 cast 运算符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:29 25 4
gpt4 key购买 nike

假设以下代码:

#include <string>
#include <iostream>
using namespace std;
struct A
{
operator int()
{
return 123;
}
operator string()
{
return string("abc");
}
};
void main()
{
A a;
cout<<(a==123)<<endl;
//cout<<(a==string("abc"))<<endl;
}

首先,我将对象 aint 变量进行比较。然后,我尝试将它与 string 变量进行比较,但要编译的程序文件。注释掉包含比较的行后,它编译得很好。有什么问题?

最佳答案

您为您的类提供了intstd::string 的转换运算符,
这可确保正确地进行转换。
但是,要使 == 正常工作,被比较的类型必须定义一个 ==
该语言为 int 类型提供隐式 ==,但为 std::string 提供 == 运算符重载,因此错误。

关于c++ - 为什么我不能在比较中使用 cast 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998279/

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