繁体   English   中英

C ++中具有类/对象的逻辑运算符

[英]Logical operators with class/objects in C++

完全不熟悉C ++。 到目前为止,我试图理解类和对象的要点是,对于基本知识而言,它并没有太复杂。 但是,我编写的这段代码无法正常工作。 它有些起作用,但是需要两次用户输入。

#include <iostream>
#include <string>
using namespace std;

class FooFoo {
public :

string GetName() {
    cin >> name;
    return name;
}

private:
    string name;
};

int main()
{
FooFoo object;
if (object.GetName() == "John" || object.GetName() == "Chris")
{
    cout << "Yes";

}
else {
    cout << "No";
}

}

如果我输入“ John”,它将立即返回“是”。 但是,当我输入其他任何内容时,它将提示我再次输入内容,然后if / else会根据我输入的内容进行相应的操作。

您调用object.GetName()两次,这将导致要求输入两次。 将此函数的结果存储到变量中,并在if语句中使用它。 || 如果第一个表达式为真,则该语句会短路。 如果第一个为true,则这导致第二个调用无法执行。

这是因为GetName()每次都要求输入,

因此,第一次请求x时,如果x不是john,则转到下一个测试,该测试然后获取输入并针对x = chris进行测试。

尝试将其更改为此:

int main()
{
FooFoo object;
string test = object.GetName()
if (test == "John" || test == "Chris")
{
    cout << "Yes";

}
else {
    cout << "No";
}

}

希望能有所帮助

您当前的if语句有效评估为:

if (object.GetName() == "John")
  cout << "Yes";
else if (object.GetName() == "Chris")
  cout << "Yes";
else
  cout << "No";

尝试先输入Chris ,再输入John然后您应该会得到No

只需在if语句之前调用getName() ,将值存储在本地变量中,然后进行测试:

string name = object.GetName();
if (name == "John" || name == "Chris")
  cout << "Yes";
else
  cout << "No;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM