当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-04 23:00 

注册: 2009-02-21 22:20
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
我一直以为私有成员只能被包含它的对象自己访问。但是今天在看操作符重载时发现私有和保护成员同样可以被和包含它们对象所属一样的类的其他对象访问。后来写程序试了一下,发现和操作符重载没有关系。好像C++本身就是如此
比如:
class derive
{
private:
int _i;
public:
void test(derive &d)
{
d._i = 2;
cout << "derive test " << d._i << endl;
}
};

int main()
{
derive d;
derive d1;
d.test(d1);//显示 derive test 2
}
在test函数中访问了另一个derive类型的变量d的私有成员_i。似乎同一种类的对象互相之间都可以任意访问对方的成员?不知是不是这么一种说法?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-05 19:48 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
本来就是可以的


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-14 23:12 
头像

注册: 2008-06-18 22:02
帖子: 186
送出感谢: 0 次
接收感谢: 1
被标题绕晕了,路过。。。。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-18 17:13 
头像

注册: 2009-11-17 12:29
帖子: 883
送出感谢: 0 次
接收感谢: 0 次
那不是很方便么
类的成员函数能访问该类自己(!不是指父类)所有成员...


页首
 用户资料  
 
5 楼 
 文章标题 : Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-18 23:31 

注册: 2009-04-30 21:14
帖子: 13
送出感谢: 0 次
接收感谢: 0 次
同一个类的成员之间可以相互访问,但是不能访问被继承对象的private对象,除非有friend函数。

如果是重定义某个类的成员函数,那么它同样可以访问该类的私有成员。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
帖子发表于 : 2009-11-20 9:47 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
cxzqw 写道:
我一直以为私有成员只能被包含它的对象自己访问。但是今天在看操作符重载时发现私有和保护成员同样可以被和包含它们对象所属一样的类的其他对象访问。后来写程序试了一下,发现和操作符重载没有关系。好像C++本身就是如此
比如:


类是在编译阶段就存在的概念,对象是在运行阶段才存在的。

C++的私有判断是在编译时间决定的,因此C++的私有只能是基于类的,不是基于对象的。

记得这句话就够了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译