我正在经历从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