Доступ К Закрытым Членам Класса

  • Автор темы rtprls
  • Дата начала
R

rtprls

Гость
#1
Здравствуйте

Есть вот такая программа.

C++:
#include <cstdlib>
#include <iostream>
using namespace std;

class Counter {
public:
Counter();
Counter(int val) { itsVal=val;}
Counter (const Counter & rhs);
~Counter(){}
int GetItsVal() const {return itsVal;}
void SetItsVal(int x) {itsVal=x;}
Counter operator -(const Counter &);

private:
int itsVal;
};

Counter :: Counter():
itsVal(0)
{}

Counter Counter :: operator -(const Counter & rhs)
{
return Counter(itsVal-rhs.GetItsVal());
}


Counter :: Counter (const Counter & rhs1)
{
itsVal=rhs1.itsVal;
}

int main() 
{
Counter varOne(2), varTwo(4), varThree;
varThree=varTwo-varOne;
cout<<"varThree.GetItsVal() "<<varThree.GetItsVal()<<"\n";

Counter varFive(varOne);
cout<<"varFive.GetItsVal() "<<varFive.GetItsVal()<<"\n";

system("pause");
return 0;
}


Можете объяснить, почему в конструкторе копировщике ссылка rhs1 имеет доступ к закрытому члену класса itsVal, а в функции перегрузки оператора обратится к закрытой переменной таким образом я уже не могу, а должен использовать rhs.GetItsVal()
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#2
а в функции перегрузки оператора обратится к закрытой переменной таким образом я уже не могу
А почему ты не можешь? Я могу.
C++:
Counter Counter :: operator -(const Counter & rhs)
{
return Counter(itsVal-rhs.itsVal);
}