C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

1、 this指针的概念

      this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址。一个类所有的对象调用的成员函数都是同一代码段,那么成员函数又是怎么识别属于不同对象的数据成员呢?

2、 this指针的应用

      在对象调用成员函数时,成员函数除了实参外,还接受对象的地址,这个地址被一个隐含的形参this指针所获取,它等同于执行this=&对象名。所有对数据成员的访问都隐含地被加上前缀this->。例如,x=0; 等价于this->x=0

3、 实例代码

#include <iostream>
using namespace std;
class point
{
public:
    
int x;
    
int y;
    point()
    
{
        x
=0;
        y
=0;
    }

    point(
int a,int b)
    
{
        x
=a;
        y
=b;
    }

    
void output()
    
{
        cout
<<"x = "<<x<<endl<<"y = "<<y<<endl;
    }

    
void input(int x,int y)
    
{
        x
=x;
        y
=y;
    }

}
;
void main()
{
    point pt(
5,5);
    pt.input(
10,10);
    pt.output();
}

上面的输出结果如下:

      
      这是为什么呢?因为在input函数中,由于变量的可见性,实际上是把形参x赋给了形参x,形参y赋给了形参y。所以,在定义变量的时候,不要使参量和成员变量重名。如果重名了,可以在数据成员的前面加上this指针,以便区别。如果想得到x=10,y=10的结果,input函数可以进行如下的修改:
    void input(int x,int y)
    
{
        (
*this).x=x;
        (
*this).y=y;
    }

修改后的输出结果如下:

      
注意
:在vc6的编译环境下,如果我这样修改:
    void input(int x,int y)
    
{
        
this.x=x;
        
this.y=y;
    }

      会提示:
      error C2228: left of '.x' must have class/struct/union type
      error C2228: left of '.y' must have class/struct/union type

想要获得更多内容,可点击:《Visuanl C++代码参考与技巧大全》学习笔记——索引随笔
posted on 2010-02-15 15:35 烟皑 阅读(269) 评论(0)  编辑 收藏 引用 所属分类: 《Visual C++代码参考与技巧大全》学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理