免费注册 查看新帖 |

Chinaunix

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

[C++] 我觉得应该在c++成员函数的参数中加入this指针 [复制链接]

论坛徽章:
0
发表于 2010-07-15 14:29 |显示全部楼层
本帖最后由 donglongchao 于 2010-07-15 14:33 编辑

RT,就像python中的self一样。
否则很多人可能入门的时候就会对类和对象的概念分不清。比如
  1. class X
  2. {
  3. int a;
  4. public:
  5. int fun(X& x)
  6. {
  7. return a+x.a;
  8. }
  9. };
  10. int main(void)
  11. {
  12. X y;
  13. X x;
  14. x.fun(y);
  15. return 0;
  16. }
复制代码
有人可能会理解成为成员函数fun可以访问类中私有的数据a,但是对于为什么x.a也可以访问就犹豫不解了。如果参数中强制使用this指针,他很早就会发现成员函数内部 对象/引用/指针可以访问私有数据,然后就会进一步想为什么,然后就会发现c++中访问权限控制是针对类的,而不是针对对象的。这样就不会有类似 成员函数内部x.a合法 的不解了。

论坛徽章:
0
发表于 2010-07-15 14:37 |显示全部楼层
好想法!

论坛徽章:
0
发表于 2010-07-15 14:38 |显示全部楼层
好想法!
rain_fish 发表于 2010-07-15 14:37

谢谢。

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2010-07-15 14:44 |显示全部楼层
那是不是会写出
Class a, b

a.GetXXX(&b)

这种代码来

论坛徽章:
0
发表于 2010-07-15 14:48 |显示全部楼层
那是不是会写出
Class a, b

a.GetXXX(&b)

这种代码来
hellioncu 发表于 2010-07-15 14:44

恩,这个是有可能。
如果这样的话,可以不强制在参数中显式加入this,可以强制在使用成员数据的时候强制使用this指针。
不过这样的话,效果就差了很多。
不知python是如何处理的?

论坛徽章:
0
发表于 2010-07-15 14:49 |显示全部楼层
小民围观.

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2010-07-15 14:51 |显示全部楼层
恩,这个是有可能。
如果这样的话,可以不强制在参数中显式加入this,可以强制在使用成员数据的时候强制 ...
donglongchao 发表于 2010-07-15 14:48



    不懂Python。
现在C++这样处理也很好理解

论坛徽章:
0
发表于 2010-07-15 14:59 |显示全部楼层
好像python中是这样

  1. #!/usr/bin/env python
  2. class X:
  3.      def __init__(self):
  4.          self.a = 1;
  5.      def fun(self,x):
  6.          return self.a+x.a
  7. x = X()
  8. y = X()
  9. print x.fun(y)
复制代码
咋整的?

论坛徽章:
0
发表于 2010-07-15 15:07 |显示全部楼层
好像python中是这样咋整的?
donglongchao 发表于 2010-07-14 22:59



    x.fun(...) 等价于 X.fun(x, ...),用对象来调用方法的话,第一个参数(self)自动绑定为该对象,不用额外传入。

论坛徽章:
1
双子座
日期:2014-08-29 17:15:03
发表于 2010-07-15 15:16 |显示全部楼层
觉得是个扯淡的想法,欢迎拍砖
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP