为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个temp可以不通过成员函数自由访问自己的私有成员变量?

为什么这个temp可以不通过成员函数自由访问自己的私有成员变量?

Coordinate Coordinate::operator+(const Coordinate &coor)

{

        Coordinate temp;

        temp.m_iX = this->m_iX + coor.m_iX;

        temp.m_iY = this->m_iY+ coor.m_iY;

        return temp;

}

正在回答

4 回答

我也有同样疑问,temp是新开辟的内存空间,是全新的对象,直接使用temp.m_iX是什么操作?temp可不是类内访问,对于temp这个对象而言已经是外部访问了。而且对于引用的coor为什么也能直接访问他自己的私有数据成员,不要说是类内访问,类内访问指的是当前对象的成员函数可以访问数据成员,this->m_iX这个才算调用这个运算符重载函数的那个对象进行的类内访问。总之,按我看来除了this->m_iX和this->m_iY这两个操作是正常情况,其余都不太对,除非把私有数据成员改成公有的还差不多。

0 回复 有任何疑惑可以回复我~

加了Coordinate:: 是类外实现,在头文件中已经声明过了,所以成员函数可以自由访问私有成员,和类内访问是一样的

1 回复 有任何疑惑可以回复我~

这个temp访问数据是类内访问啊

0 回复 有任何疑惑可以回复我~

...     因为这个temp 是实例化的一个临时对象,他也是类对象当然可以访问自己的数据成员函数。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

为什么这个temp可以不通过成员函数自由访问自己的私有成员变量?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信