0

例:

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

ここで、+ 演算子をオーバーロードして、2 つの従業員オブジェクトの年齢を追加するとします。これらの従業員オブジェクトの 1 つは、オーバーロードされたオペレーター関数を呼び出しますが、このインスタンスでは、そのオブジェクトも基本クラスから 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

簡単に:いいえ。

サブクラスから呼び出せるようにするには、常にメソッド (または変数) を保護または公開する必要があります。(または、別の「getter」メソッドを定義してアクセスすることもできますが、保護または公開する必要があります。)

于 2012-06-28T06:11:08.463 に答える
0

Person のプラス演算子をオーバーロードできます。あるいは、 getAge() は public であるため、オーバーロードされたオペレーターから呼び出すことができます。

于 2012-06-28T06:11:27.403 に答える
0

そのプロパティを非公開のままにしたい場合は、フレンド オペレーターのオーバーロード関数を使用できます。

于 2012-06-28T06:51:14.027 に答える