LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 645|回复: 6

这段程序中怎么能够访问private数据成员?

[复制链接]
发表于 2003-7-22 19:22:16 | 显示全部楼层 |阅读模式

  1. class HugeInt {
  2. public:
  3.         HugeInt operator+(const HugeInt & op2) const;
  4. private:
  5.         short integer[30];
  6. };


  7. HugeInt HugeInt::operator+( const HugeInt &op2 ) const
  8. {
  9.         HugeInt temp;
  10.         int carry = 0;
  11.         for ( int i = 29; i >= 0; i-- ) {
  12.                 temp.integer[i] = integer[ i ] + op2.integer[ i ] + carry;
  13.                 if ( temp.integer[ i ] > 9 ) {
  14.                         temp.integer[ i ] %= 10;
  15.                         carry = 1;
  16.                 }
  17.                 else
  18.                         carry = 0;
  19.         }
  20.         return temp;
  21. }
复制代码


在重载operator+的时候,temp.integer, op2.integer都是对private成员的访问,为什么也行?
发表于 2003-7-22 20:07:10 | 显示全部楼层
private是不能从外部访问的,只能由成员函数来访问。operator+能访问private,是因为它是HugeInt的成员函数。
 楼主| 发表于 2003-7-22 20:23:37 | 显示全部楼层
但是他里面访问了其他对象的private数据呀?
这难道也行呀?

那就是说成员函数能够访问这个类的任何对象的private成员?
发表于 2003-7-23 00:16:31 | 显示全部楼层
对了
发表于 2003-7-23 11:27:05 | 显示全部楼层
因为是同一对象的不同实例。
发表于 2003-7-23 18:47:25 | 显示全部楼层
楼上的说得不是很确切,应该是同一类型的不同实例。对象就是类的实例嘛。
 楼主| 发表于 2003-7-23 20:16:16 | 显示全部楼层
现在知道了,谢谢各位了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表