2015-04-24 26 views
-1

所以我被告知,爲了我的程序的一部分工作,我需要重載==運算符,不幸的是我絕對不知道如何做到這一點,這裏是類爲此運營商需要重載重載一個C++ ==運算符

#ifndef PC_H 
#define PC_H 
#include <iostream> 
#include <list> 

using namespace std; 

class PC{ 
protected: 
    string name; 
    string IP; 
    int disk_size; 
    string pass; 
public: 
    PC(); 
    PC(string, string, int, string); 
    string getName(); 
    string getIP(); 
    int getSize(); 
    string getPass(); 
    void setName(string); 
    void setIP(string); 
    void setNewPass();   
    void getAllInfo();    
}; 

#endif 

我會如何重載==操作符,謝謝

+2

它沒有得到比這更好的http://stackoverflow.com/questions/4421706/operator-overloading的 – 4386427

+2

機制超載==是一樣的任何其他操作。 – Hurkyl

+0

是的,我看到了這個頁面,但它對我來說似乎不夠描述,比如「inline」或「bool」必須替換爲我班的任何代表,以及它所說的「做實際比較」 –

回答

2

這只是一個功能。你像任何其他功能一樣重載它。您可以使用以下簽名。

bool operator==(const PC& other) const; 

並定義它。

bool PC::operator==(const PC& other) const 
{ 
    // Do comparisons of member state and return 'true' or 'false' 
} 

或者你可以把一個自由的功能。

bool operator==(const PC& lhs, const PC& rhs) 
{ 
    // Do comparisons of member state and return 'true' or 'false' 
} 
+0

好的,但是比較看起來像什麼呢? –

+0

@HunterTipton這取決於他們被視爲_equivalent_意味着什麼。例如,如果名稱相同,它們是否相同?如果是這樣,那麼'return this-> name == other.name'或'return lhs.getName()== rhs.getName()'。否則,包括任何其他必要的比較。您需要以任何方式實現所需行爲的比較。 –

+0

...尤其是,在實現'operator =='之前,您必須知道/決定實際需要的行爲。 – Hurkyl