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",它将立即返回yes。但是,当我输入其他内容时,它会提示我再次输入一些内容,然后if/else会根据我输入的内容进行相应的操作。
您调用object.GetName()
两次,这会导致两次请求输入。将此函数的结果存储到一个变量中,并在if语句中使用该变量。如果第一个表达式为真,则||语句被短路。如果第一个调用为真,则导致第二个调用不被执行。
这是因为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;
相关文章:
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 逻辑运算符上出现错误代码 a')'
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- 我需要这方面的帮助C++在使用逻辑运算符时是/否问题
- 如何在自定义对象的<<运算符中添加自定义前缀
- C++复合逻辑运算符不使用比较运算符
- (C++)为什么"||"逻辑运算符返回 1?
- 使用初始值设定项列表作为函数参数的类对象实现运算符 [] 的示例
- C++指针对象的运算符重载
- 逻辑运算符的问题。主要对 && 和 || 感到困惑
- 新的类对象,运算符重载
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- 覆盖组合对象的<<运算符会给出错误 C++
- 自定义类对象及其<运算符集
- std::查找多个元素和逻辑运算符
- C++对象 [实现] 运算符 == 错误
- 引用与对象作为运算符重载中的返回
- 逻辑运算符及其在C/C 中的优先级
- 括号和逻辑运算符
- c++中带有类/对象的逻辑运算符