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