关于复制构造函数
Point::Point(Point&p):X(p.X),Y(p.Y)
{
cout < < "拷贝Point的对象:( " < <p.X < < ", " < <p.Y < < ") " < <endl;
}
X,Y为Point类的私有数据成员
我想知道复制构造函数中的对象p为什么能访问私有数据成员
[解决办法]
C++的类成员访问控制是针对类而言,而不是针对类的实例,也就是对象的。由于对象p的类型也是point,而point类可以访问point类的私有成员,所以point的成员函数可以访问从参数中传递过来的另一个point对象的私有成员。
private,protected关键字只是表明类中的成员是private或protected。他们的作用仅仅限于类层面的控制。而并不是说用来限制对对象中成员的访问。因此,任何两个对象,只要他们的类型相同,便可以相互访问私有成员。
[解决办法]
简单来说
class A
{
private:
int p;
};
A a,b;
b可以访问a.p