免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
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
发表于 2010-07-26 19:09 |显示全部楼层
没看代码,
一个的私有成员只能自己的成员函数或者友元函数才有访问权限

论坛徽章:
0
发表于 2010-07-27 08:15 |显示全部楼层
回复 2# phy0077


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

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
发表于 2010-07-27 09:10 |显示全部楼层
对象这是两个概念

论坛徽章:
0
发表于 2010-07-27 09:28 |显示全部楼层

论坛徽章:
0
发表于 2010-07-27 09:45 |显示全部楼层
同意四楼的说法!

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

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



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

论坛徽章:
0
发表于 2010-07-27 10:08 |显示全部楼层
指针在手, 天下我有
mgqw 发表于 2010-07-27 10:03

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

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


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

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP