【发布时间】:2012-06-28 06:07:04
【问题描述】:
例子:
class Person
{
private:
int age;
public:
int getAge()
{
return age;
}
};
class Employee: public Person
{
private:
int empNum;
};
现在说我想重载 + 运算符来添加两个员工对象的年龄。其中一个员工对象调用重载的运算符函数,但在本例中,我还需要该对象从基类调用 getAge() 函数。我知道我可以只设置年龄保护而不是私有,但是有没有办法做到这一点,让该财产保持私有?
【问题讨论】:
-
getAge()已经公开,所以没有问题。 -
int operator+(Person& a, Person& b) { return a.getAge() + b.getAge(); }有什么问题? -
@PhilipKendall 我不推荐这样的重载。人+人等于一个人的年龄之和真的很“明显”吗?为什么这样?为什么不使用重量或其他任何东西:-) 应该非常明智地使用运算符重载。
a.getAge() + b.getAge()或sumAge(a,b).. 我会坚持其中之一。 -
@elmes 在某种程度上,我同意你的看法,但这主要是风格问题,原始发帖人确实明确要求重载
operator+以增加年龄。 -
我使用了人们的年龄,因为我认为这比我实际做的更容易看。这是为了简化。
标签: c++ class inheritance operator-overloading data-hiding