0

例子:

class Person
{
private:
     int age;
public:
     int getAge()
     {
         return age;
     }
};
class Employee: public Person
{
private:
    int empNum;
};

现在说我想重载 + 运算符来添加两个员工对象的年龄。其中一个员工对象调用重载的运算符函数,但在本例中,我还需要该对象从基类调用 getAge() 函数。我知道我可以将年龄保护而不是私有,但是有没有办法做到这一点,让该财产成为私有?

4

4 回答 4

4

您应该能够像这样编写您的运算符:

int operator+(const Employee& arg1, const Employee& arg2) {

  int result = arg1.getAge() + arg2.getAge();
  return result;

}
于 2012-06-28T06:10:24.307 回答
0

如果您想将该属性保留为私有,您可以使用友元运算符重载函数。

于 2012-06-28T06:51:14.027 回答
0

简单地说:没有。

您始终需要保护或公开方法(或变量),以便您从子类中调用它。(或者您可以定义另一个“getter”方法来访问它,但现在它必须是受保护的或公共的。)

于 2012-06-28T06:11:08.463 回答
0

您可以重载 Person 的加号运算符。或者, getAge() 可以从重载的运算符中调用,因为它是公共的。

于 2012-06-28T06:11:27.403 回答