我正在經歷從Java到C++的轉換,並試圖編寫一個簡單的程序。調用超類方法運算符==
有一個超Animal
具有以下inteface:
class Animal
{
public:
Animal(int a, std::string n);
bool operator==(Animal a);
private:
int age;
std::string name;
};
而且它的子類Dog
:
class Dog : public Animal
{
public:
Dog(int a, std::string n, double w);
bool operator==(Dog d);
private:
double weight;
};
我的問題是關於狗的operator==
方法,其中比較2只狗。
動物的operator==
低於。
bool Animal::operator==(Animal a) //overriding of operator ==
{
return (age==a.age) && (name==a.name);
}
現在我想用Animal的方法編寫狗的版本。
就像我在Java中做到:
boolean equals(Dog d){
return (super.equals(d)) && (this.name==d.name);
}
我需要的是(super.equals(d))
C++的等價物。如果它是一個正常名稱的方法,它會很容易(Animal :: equals(d)),但我不知道如何爲operator ==操作,它有不同的語法。
使用標準符合簽名:布爾運算符==(const Animal&a)const;' – 2014-10-02 18:15:00
你知道如何在父類中調用普通函數嗎?當你弄明白的時候,你只需要記住'operator =='只是一個普通的成員函數。 – 2014-10-02 18:16:06
@crashmstr:因爲他說他已經知道如何使用'Animal :: equals(d)'了,所以不是這樣。 – 2014-10-02 18:16:49