一、引言
今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员。感觉不可思议。
自己写的实例代码:
#include <iostream> using namespace std; class CTest
{
public:
CTest(int n)
{
m_a = n;
} CTest(CTest &t)
{
m_a = t.m_a;
} public:
void Print()
{
cout << m_a << endl;
}
private:
int m_a;
}; int main(int argc, char **argv)
{
CTest t();
CTest t2(t);
t.Print();
t2.Print(); return ;
}
这段代码是可以正常运行的。
二、结论
学习的时候只记得,类的私有成员不能在外部被访问到。所以就认为绝对不能在使用对象t.m_a的方式来访问,其实可以的。因为虽然是在另外一个对象内,但是还是在类的内部访问的。
那么到底是怎么来实现的,在同类的其他对象中可以访问对象私有成员,而在不同类的对象中不可以访问呢?