| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 571 人关注过本帖
标题:新人请教this指针
只看楼主 加入收藏
qq263640010
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
新人请教this指针
class ww
{
public:
    ww(){a=10;}
    ~ww(){}
    const ww& operator++()
private:
    int a;
};

const ww& ww::operator++()
{    ++a;
return *this;
}

我是新手 我知道类中隐含this。
 这里为什么要使用返回this指针呢?
请大哥大姐指导。
搜索更多相关主题的帖子: return public private 大哥 class 
2012-02-04 17:42
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:7 
因为operator++的返回值是const ww&,所以要返回当前对象的引用(*this代表当前对象,因为this是当前对象的指针),返回这个对象引用的目的主要是为了方便一些连接运算,比如:
ww w;
(++w).f();
但f()必须是常成员函数(返回类型前面加了const),因为这是前缀++,所以更好的方法是把operator++的返回值修改为ww&,这样就能使用该类的所有的公共成员。

My life is brilliant
2012-02-04 18:43
qq263640010
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-2
收藏
得分:0 
回复 2楼 lz1091914999
多谢  但我真的理解不了
2012-02-04 21:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:7 
楼主可以试试体会这个:
程序代码:
#include <iostream>
using namespace std;

int main()
{
    int a = 5;

    ++(++a);    // a -> 7
    ++(a++);    // Error!

    return 0;
}

第一句话是对的,之后 a 应该变成 7。
这说明,++a 之后 "返回" 的东西依然是 a,可以用来再次 ++a;
而第二个不行。因为 a++ 返回的仅是 a 还没有增加前的值,不是 a 本身了。

如果你自己想写个函数,也有类似内置 前++ 的特性,那么也要返回对象本身。
可是如何这样做呢?
众所周知,this 是指向当前对象的指针,返回它只是返了个指针,这不是我们要的。我们要的是当前的对象,也就是指针指向的那个东西,所以是 *this。
楼主应该接触过 * 这个运算符吧?
2012-02-04 21:21
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:7 
以下是引用lz1091914999在2012-2-4 18:43:07的发言:

因为operator++的返回值是const ww&,所以要返回当前对象的引用(*this代表当前对象,因为this是当前对象的指针),返回这个对象引用的目的主要是为了方便一些连接运算,比如:ww w;
(++w).f();但f()必须是常成员函数(返回类型前面加了const),因为这是前缀++,所以更好的方法是把operator++的返回值修改为ww&,这样就能使用该类的所有的公共成员。
顶,果然有Bruce Eckel 的风范

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-02-08 09:15
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
以下是引用lq7350684在2012-2-8 13:29:16的发言:

理解不了。
???兄弟开玩笑呢吧?

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-02-08 14:44
快速回复:新人请教this指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029613 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved