[英]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.