R
rtprls
Здравствуйте
Есть вот такая программа.
Есть вот такая программа.
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()