为什么 if 语句对于运算符重载函数计算 false
Why is if statement evaluating false for an operator overloading function?
class cid
{
int caseNo,agentNo;
public:
cid(){}
cid(int caseNo)
{
this->caseNo = caseNo;
}
void operator<<(int x)
{
this->agentNo = x;
}
void operator>>(int x)
{
this->agentNo = 0;
if(x == this->caseNo)
cout << "nhello";
else
cout << "nbye";
}
void display(void)
{
cout << "ncase num is : " << caseNo << " agent num is : " << agentNo;
}
};
int main()
{
cid daya(1),praduman(7);
daya << 10;
praduman << 1550;
daya.display();
praduman.display();
daya >> 10;
praduman >> 1550;
daya.display();
praduman.display();
cout << "npress enter to continue...";
cin.ignore();cin.get();
return 0;
}
输出
case num is : 1 agent num is : 10
case num is : 7 agent num is : 1550
bye
bye
case num is : 1 agent num is : 0
case num is : 7 agent num is : 0
press enter to continue...
我试图评估案例No和x,看看它是否被分配,如果编号相同,然后将agentNo设置为0,但为了调试,我试图将其与已经分配为案例编号的1进行比较,它评估为假,请帮助
in line
cid daya(1),praduman(7);
您设置daya.caseNo = 1
并praduman.caseNo = 7
.跟
daya << 10;
praduman << 1550;
您设置daya.agentNo = 10
并praduman.agentNo = 1550
.这正是
daya.display();
praduman.display();
使用daya >> 10;
设置daya.agentNo = 0
并检查是否if(x == this->caseNo)
.x
的值为 10,daya.caseNo
为 1
。因此,这会产生false
并输出Bye
。同样的故事praduman >> 1550;
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 可以打印矢量和矢量中的矢量的非重载C++函数
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 使用模板重载函数
- C++线程中,没有重载函数接受 X 参数
- std::vector 没有重载函数的实例与参数列表匹配
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- 对重载函数find_first_not_of的不明确调用
- 如何从重载解析中删除重载函数?
- CUDA:重载函数"isnan"的多个实例
- C++派生类重载函数(带有 std::function 参数)不可见
- 避免在人为的重载函数调用中拼写出类型
- C++:如何为多个重载函数保留通用代码路径?
- 什么时候可以使用常量装饰调用我的重载函数?
- 尝试使用谓词函数会导致错误:"std::sort"未找到匹配的重载函数
- std::调用,未找到匹配的重载函数
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 为什么使用不匹配的参数调用重载函数仍然有效
- 如何通过签名作为模板参数来解决重载函数?