这个为什么是正确的?

abblly 2006-11-07 10:28:04
class A
{
public:
A(int ii):i(ii)
{}
void TestPrint(const A& aa)//这里面是访问另一个对象aa的私有成员i,
// 而不是this.i,为什么不报错
{
cout<<aa.i<<endl;
}
private:
int i;
};

int main()
{
A a(1),b(2);
a.TestPrint(b);
return 0;
}

如题。
...全文
208 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
abblly 2006-11-08
  • 打赏
  • 举报
回复
类的访问权限是按类型分,不是按对象分的。
A类的内部成员函数,可以访问A类的私有成员,A类的友元可以访问A类的私有成员。
---------------------------
讲的挺清晰,结贴
guochun 2006-11-08
  • 打赏
  • 举报
回复
编译器应该是将其按友元的方式来处理的,类本身就是自身的友元
guochun 2006-11-07
  • 打赏
  • 举报
回复
编译器这么安排好象也合理,在类内当然对本类完全透明,能访问本类对象的私有成员也说得过去,不过我还从没在其他地方见到过这方面的说明,不知属不属于C++标准内
guochun 2006-11-07
  • 打赏
  • 举报
回复
我也觉得应该不能访问才合理,不知它为什么这么安排。
不过现在知道这样规定了,就这么用吧,又学了一点
shunan 2006-11-07
  • 打赏
  • 举报
回复
恩!nule(怒了)说的很清楚了
a_b_c_abc1 2006-11-07
  • 打赏
  • 举报
回复
可以结了。
nule 2006-11-07
  • 打赏
  • 举报
回复
成员函数当中当然可以访问它所属的类的对象的私有成员了。
这些基本概念你可得好好整理下,不要晕头了。
lann64 2006-11-07
  • 打赏
  • 举报
回复
void TestPrint(const A& aa)//这里面是访问另一个对象aa的私有成员i,
// 而不是this.i,为什么不报错
这不还是A类的对象嘛,当然可以访问私有成员了。

类的访问权限是按类型分,不是按对象分的。
A类的内部成员函数,可以访问A类的私有成员,A类的友元可以访问A类的私有成员。
飞哥 2006-11-07
  • 打赏
  • 举报
回复
void TestPrint(const A& aa)//这里面是访问另一个对象aa的私有成员i,
// 而不是this.i,为什么不报错
{
cout<<aa.i<<endl;
}
----------------------------
怎么可能报错呢?

在类内,对象对私有成员都是有访问权限的,testprint是类的成员函数,自然可以访问私有成员

如果你在外面定义一个类的实例,那肯定不能访问
---
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧