关于private的一点疑惑
#include<iostream>
using namespace std;
enum{ Larger, Smaller, Same};
class Data
{
public:
Data(int val):itsValue(val){ }
~Data( ){ cout << "Data deleting..\n"; }
int compare(const Data &);
void show( ){ cout << "Value: " << itsValue << endl; }
private:
int itsValue;
};
int Data::compare(const Data & rhs)
{
if(itsValue > rhs.itsValue) /////..........
return Larger;
else if(itsValue == rhs.itsValue) /////...........
return Same;
else
return Smaller;
}
int main( )
{
Data data1(1);
Data data2(2);
cout << data1.compare(data2) << endl;
return 0;
}
我想问的是既然itsValue是Data的私有数据,为什么在compare(const Data &)这个函数就可以使用点操作符来访问itsValue(data2.itsValue)呢?按书上说的话,这个程序应该不能通过编译的,可是居然通过了,究竟是怎么一回事?