簡體   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