Fork me on GitHub

9/16/2010

[C++] 成員函式對私有成員的存取權限是 type-wise 不是 object-wise

如下 main 所示,宣告兩個 OneNumber 物件 aa 和 bb,並呼叫 aa 當中的 sumWithAnother 方法。可以看到 sumWithAnother 這個成員函式對於 bb 這個非 aa 物件,是有權力存取該私有成員變數 _num 的!

#include <iostream>

using namespace std;

 

class OneNumber

{

private:

  int _num;

 

public:

  OneNumber(int x); 

  int sumWithAnother(OneNumber n);

};

 

int main()

{

  OneNumber aa(2);

  OneNumber bb(8);

  int sum = aa.sumWithAnother(bb);

  cout << "sum: " << sum << endl;

 

}

 

OneNumber::OneNumber(int x) : _num(x) {}

int OneNumber::sumWithAnother(OneNumber n)

{

  return (_num + n._num);

}



...

No comments:

Post a Comment