在拷贝构造函数中为什么可以访问引用对象的私有变量? 例如: class Point { public: Point(int xx=0,int yy=0){X=xx;Y=yy;} Point(Point &p); private: int X,Y; }; Point::Point(Point &p) { X=p.X; Y=p.Y; } 更多 分享到: 相关帖子推荐: |
管理 回复次数:21 |
|
#1 回复于: 奇怪 |
管理 |
|
#2 回复于: 私有是为了实现“对外”的信息隐藏,或者说保护,在类自己内部,有必要禁止私有变量的直接访问吗?难道还要让我们声明一个类为自身的友元? |
管理 |
|
#3 回复于: freefalcon(心宇—小小菜鸟想高飞) :难道你的意思是说我随便定义类里面的一个函数,都可以用这个类的一个对象的这个函数访问这个类的另外一个对象的私有变量么? |
管理 |
|
#4 回复于: 呵呵,楼上说的是啊,私有的意思是什么啊?如果有一天你自己的东西自己都不能用了,那就不叫私有了,叫“他有” |
管理 |
|
#5 回复于: Point::Point(Point &p) |
管理 |
|
#6 回复于: 是的,在一个类的成员函数里面,可以访问该类另一个对象的私有成员 |
管理 |
|
#7 回复于: wildhorseych() :你我都是人类,你的钱我当然不能随便用了,是不是?我只是举个例子,没别的意思。不过我测试了一下,果然还是有问题呢 |
管理 |
|
#8 回复于: 楼主请记住你是在定义你的类,不是在用 |
管理 |
|
#9 回复于: 你的这个例子不对。 |
管理 |
|
#10 回复于: 看来我以前的理解都是错的。 |
管理 |
|
#11 回复于: 访问权限是对类而言的,不是对对象。 |
管理 |
|
#12 回复于: 我想研究一下它的设计机制。 |
管理 |
|
#13 回复于: wildhorseych(),还是没有太明白,再解释的明白些好吗,这里很多人都想知道。 |
管理 |
|
#14 回复于: 所谓访问权限(如public,private),是对“类”来说的,不是对“对象”来说的,private访问权限是其它类不能访问,而非这个类的不同 |
管理 |
|
#15 回复于: 确实是freefalcon(心宇—小小菜鸟想高飞) ( ) 说的这样 |
管理 |
|
#16 回复于: 如果在java中思路就再明显也不过了: class Test{ |
管理 |
|
#17 回复于: 要是不能访问私有成员,拷贝构造函数怎么实现? |
管理 |
|
#18 回复于: 呵呵,是这样的啦。顺便说句,楼主不厚到,问题解决了也不结贴!!! 黑名单! |
管理 |
|
#19 回复于: 为方便编程.同类同象互为友元. |
管理 |
|
#20 回复于: 楼上说得对! |
管理 |
|
#21 回复于: 这个是Bjarne Stroustrup这样设计的,原话见The C++ Programming Language P242 |