找回密码
 FreeOZ用户注册
123
返回列表 发新帖回复
楼主: 四香油饼
打印 上一主题 下一主题

[论坛技术] 我的第一个c++程序

[复制链接]
61#
 楼主| 发表于 16-2-2010 15:58:03 | 只看该作者
原帖由 coolmate 于 16-2-2010 15:23 发表
忘记了一个重要的东西:this

一定要记得对于类的成员,坚持使用this来标记,比如:void nicta::sism::generator_cpp :: feed(std::vector input)
{
    //  clear existing source
    this->source_.clear(); ...


这个是为什么呢?如果是类的内部函数,为什么一定要写this呢?不写会引起什么问题吗?
回复  

使用道具 举报

62#
发表于 16-2-2010 16:16:26 | 只看该作者
原帖由 四香油饼 于 16-2-2010 15:58 发表




这个是为什么呢?如果是类的内部函数,为什么一定要写this呢?不写会引起什么问题吗?


防止名字冲突,比如:
class X
{
  int value;
  void setValue( int value )
  {
    this->value = value;
  }
}


其实这只是个code style, 不是一个must have的要求,比如Java中强制要求的getter/setter, 用是有理由的,但是如果真的不需要,非要用就是迂腐的。这点C++社区从来都是反对的。
回复  

使用道具 举报

63#
发表于 16-2-2010 16:34:50 | 只看该作者
原帖由 四香油饼 于 16-2-2010 15:58 发表


这个是为什么呢?如果是类的内部函数,为什么一定要写this呢?不写会引起什么问题吗?


需要用到的地方一定要用。一般的地方,虽然没有什么功能上的作用,但是可以很清晰的标识出,这个东西是本类的一员,一眼看到,就不会有其它的误解。再写的时候,也可以帮助你保持清晰的线索。
回复  

使用道具 举报

64#
发表于 16-2-2010 16:49:34 | 只看该作者
原帖由 薛定谔猫 于 16-2-2010 16:16 发表


防止名字冲突,比如:


其实这只是个code style, 不是一个must have的要求,比如Java中强制要求的getter/setter, 用是有理由的,但是如果真的不需要,非要用就是迂腐的。这点C++社区从来都是反对的。

记忆中好像gcc 4.2x 以后是must have.请高手确认一下.
回复  

使用道具 举报

65#
发表于 16-2-2010 16:54:53 | 只看该作者
没有名称混淆的地方,vs2005可以不用。
回复  

使用道具 举报

66#
发表于 16-2-2010 18:07:55 | 只看该作者
原帖由 大杨树 于 16-2-2010 16:49 发表

记忆中好像gcc 4.2x 以后是must have.请高手确认一下.

never
回复  

使用道具 举报

67#
发表于 17-2-2010 01:25:52 | 只看该作者

hongdong? xinhua?

Tiberio认识吗
回复  

使用道具 举报

68#
发表于 17-2-2010 10:41:01 | 只看该作者
not hongdong, not chunhua. 知道Tiberio,不熟。
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 14-12-2024 03:17 , Processed in 0.038220 second(s), 23 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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