为什么 if 语句对于运算符重载函数计算 false

Why is if statement evaluating false for an operator overloading function?

本文关键字:重载 函数 计算 false 运算符 if 语句 为什么      更新时间:2023-10-16
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 = 1praduman.caseNo = 7.跟

daya << 10;
praduman << 1550;

您设置daya.agentNo = 10praduman.agentNo = 1550.这正是

daya.display();
praduman.display();

使用daya >> 10;设置daya.agentNo = 0并检查是否if(x == this->caseNo) .x的值为 10,daya.caseNo1 。因此,这会产生false并输出Bye。同样的故事praduman >> 1550;