我在某处看到了以下示例,并且同一类的对象能够访问私有成员。我无法理解它背后的逻辑。
#include <iostream>
using namespace std;
class CTime
{
int hours;
int minutes;
public:
void getTime(int h, int m)
{
hours = h;
minutes = m;
}
void putTime(void)
{
cout << hours << "hours and ";
cout << minutes << " minutes" << "\n";
}
void sum(CTime t1, CTime t2);
};
// ---------- vvvv ---------------
// --------- Here ---------------
void CTime::sum(CTime t1, CTime t2)
{
minutes = t1.minutes + t2.minutes;
hours = minutes/60;
minutes = minutes%60;
hours = hours + t1.hours + t2.hours;
}
int main()
{
CTime T1, T2, T3;
T1.getTime(2, 45);
T2.getTime(3, 30);
T3.sum(T1, T2);
cout << "T1 = ";
T1.putTime();
cout << "T2 = ";
T2.putTime();
cout << "T3 = ";
T3.putTime();
return 0;
}
总之(CTime,CTime)函数,CTime的对象能够访问私有成员。在哪种情况下是可能的。请澄清一下。 谢谢。
答案 0 :(得分:3)
C ++封装是基于类的。类的实例可以自由访问同一类的其他对象的私有成员。
答案 1 :(得分:1)
这是一个非常好的基本解释http://www.cplusplus.com/doc/tutorial/inheritance/
除此之外,您还可以找到具有访问类型的表。这是你感兴趣的,但整篇文章都很有用。