日志档案

发表于 2007-3-7 11:16:45

1

标签: MFC  

讨论一下C++中this指针

这是我摘录的网上的一段,共同分享。

->高手们请讨论一下C++中this指针的应用,结合实际例子,谢了!!!


     ->我不是高手,但我很乐意说一下。


this指针是C++里的一个很特殊的对象指针,也就是是它是专门指向类对象的地址的。它同时又是一个隐含式的指针,也就是使用它时不需要你自己去定义使用,而是由系统自己完成。它隐含于每一个成员函数中,也就是类的每一个成员函数都有一个this指针,它指向该函数所属类的对象。
在这里举一个例子
class A
{public:
    void init(char ma,int mb){ma=a;mb=b;}
private:
    char a;
    int b;
};
int main()
{
A objA;
A objB;
objA.init('x',5);
return 0;
}
在这个例子中,类A创建了两个对象objA和objB。我们在调用函数init时,系统为什么会知道我们是调用了objA而不是objB的呢?这就是this指针在起作用了。因为在编译时,系统其实对函数init做了一些小手脚,将他变成了init(&objA,'x',5);
相应地,形参也会变成void init(A *this,char ma,int mb){this->ma=a;this->mb=b;}
这样当函数传递时,隐式指针this就确保了我们要调用的是对象objA的函数而不是objB。
大概是这样,错误之处还望指出。

系统分类: 软件开发   |   用户分类: C++/MFC应用---很有用   |   来源: 转贴   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(829)    回复(2)  

投一票您将和博主都有获奖机会!

最新评论

  • 沙痕

    2007-3-15 21:51:21

    尽管在成员函数内部显示引用this通常是不必要的,但有一种情况下必须这样做:当我们需要将一个对象作为整体引用而不是引用对象的一个成员时。最常见的情况是在这样的函数中用this:该函数返回对调用该函数的对象的引用

  • FXPY

    2008-2-25 10:40:19

    受益匪浅~~

    谢谢!