C++拷贝构造函数的问题

已知Point类的拷贝构造函数:Point(Point &P){X=P.X;Y=P.Y;} 并且在主函数中已经给对象A赋了初值,即Point A(1,2);(假设Point构造函数已经定义了),现在要给对象B初始化,用Point B(A);语句,我想问的是,此时调用的拷贝构造函数是A的成员函数还是B的,我觉得应该是B的,也就是说调用的这个拷贝构造函数是B的成员函数,但是为何在Point(Point &P){X=P.X;Y=P.Y;}里它可以直接访问A.X和A.Y呢?这两个数据应该是A私有的,求解。

调用的拷贝构造函数是Point的成员函数,不是A的,也不是B的,Point是类,A、B只是实例,私有是指类的私有,同一个类或友元的方法可以访问私有的数据。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-16
B是通过A传值的,而不是直接访问了A.X和A.Y,B和A都是不同对象,B当然不能直接访问A的私有成员,A本身的成员XY当然可以直接访问,B是横向访问A,A纵向XY
第2个回答  2011-09-16
你拷贝构造函数写的方式属于浅拷贝(只是简单的传值),这样的结果使得A和B为同一对象,既然是同一对象,就不存在什么公有私有的问题~
第3个回答  2011-09-16
1L 什么意思,明明传的引用还传值?
2L 的估计java写多了
3L 正解
相似回答