免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 9650 | 回复: 24
打印 上一主题 下一主题

【C++】C++私有成员访问权限的一个疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-26 19:00 |只看该作者 |倒序浏览
书上说一个类的私有成员只能自己的成员函数或者友元函数才有访问权限,但是请看下面的一个简单程序:
#include <iostream>
using namespace std;
class A
{
public:
        A();
        void foo(A & a);
        void print();
private:
        int x;
};

A::A()
{
        x = 1;
}

void A::foo(A & a)
{
        a.x = 2;
}
void A::print()
{
        cout << "x = " << x << endl;
}



int main(int argc, char ** argv)
{
        A test1, test2;

        test1.foo(test2);
        test2.print();

}


foo函数中为什么能访问到其他同类对象的私有成员呢?我认为即使是同类的两个对象,应该不能彼此的私有成员,就好象每一个个体人,都属于人类,但不能获取其他人的隐私一样啊?
correct me if am wrong!

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
2 [报告]
发表于 2010-07-26 19:09 |只看该作者
没看代码,
一个的私有成员只能自己的成员函数或者友元函数才有访问权限

论坛徽章:
0
3 [报告]
发表于 2010-07-27 08:15 |只看该作者
回复 2# phy0077


    那上面的代码中的foo成员函数中访问的是其他同类对象中的私有成员,这怎么解释呢/?

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
4 [报告]
发表于 2010-07-27 09:10 |只看该作者
对象这是两个概念

论坛徽章:
0
5 [报告]
发表于 2010-07-27 09:28 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2010-07-27 09:45 |只看该作者
同意四楼的说法!

论坛徽章:
0
7 [报告]
发表于 2010-07-27 09:48 |只看该作者
这个是最基础的概念,要不然你要怎么操作对象的私有变量阿。
其实让C++封装概念形同虚设的是 指针+偏移,到时候我估计楼主会抓狂。

论坛徽章:
0
8 [报告]
发表于 2010-07-27 10:03 |只看该作者
这个是最基础的概念,要不然你要怎么操作对象的私有变量阿。
其实让C++封装概念形同虚设的是 指针+偏移,到 ...
davelv 发表于 2010-07-27 09:48



    指针在手, 天下我有{:3_203:}

论坛徽章:
0
9 [报告]
发表于 2010-07-27 10:08 |只看该作者
指针在手, 天下我有
mgqw 发表于 2010-07-27 10:03

忽然想到很老的一句
世界,world!

论坛徽章:
0
10 [报告]
发表于 2010-07-27 11:26 |只看该作者
foo函数中为什么能访问到其他同类对象的私有成员呢?我认为即使是同类的两个对象,应该不能彼此的私有成员,就好象每一个个体人,都属于人类,但不能获取其他人的隐私一样啊?...size=2]pengxihan 发表于 2010-07-26 19:00


C++允许程序员设计的两个“人”用友员函数就可以互相获取对方的隐私,这是C++他妈的糟糕特性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP