注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

I choose

sailing with my heart ......

 
 
 

日志

 
 

C++中隐式this指针  

2012-12-20 15:03:50|  分类: 笔试题库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//★参考资料★ http://www.ok2002.com/cc/cc/s.asp?r=a21229232167093
//【程序名称】隐式this指针/*
【C++ 隐式this指针】为什么要有this指针,this指针的作用,this指针的类型,谁可以使用this
关于this指针:
this指针是存在于类的非静态成员函数的,它指向类的实例.
即同一个类的不同实例有它自己的this指针,this是函数所在对象的地址.
正是这个this指针让成员函数知道是哪个实例调用了它.
this指针是隐式定义的,每个成员函数都有一个this指针,下面举例子说明:
当对象A1调用add(2,2)函数时,即将A1对象的地址传递给了this指针。
add函数的原型应该是 void add(A*this,int a,int b);
第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。
这样A1的地址传递给了this,所以在add函数中便显式的写成:
void add(int a,int b){this->x+=a;this->y+=b;}
即可以知道,A1调用该函数后,也就是A1的数据成员被调用并更新了值。
即该函数过程可写成 A1.x+=a;A1. y+=b;


下面再对this指针作一下总结:

(1).为什么要有this指针: 
当成员函数引用该类特定对象的另一个成员时,C++是如何保证该函数正确的引用了该对象呢?
 
(2).this指针的作用: 
每一个对象的非静态成员函数都可以通过使用this指针来确定其所在对象的地址,
即在该对象自己的成员函数引用其对象内部的成员的时候,this只是一个隐含的参数,
用来引用该对象的数据成员和成员函数。
 
(3).this指针的类型(const or not const) 
对于类A的非const成员函数,this指针的类型为A*(指向类A的对象的常量指针),
对于类A 的const成员函数来说,this指针的类型为const A*(指向类A的常量对象的常量指针),
该指针不能赋值也不能取地址,只能被该对象的非静态成员函数使用。 

(4).谁可以使用this 
每个该类的非静态成员函数都有权通过访问指向该对象的this指针来调用该对象的成员。
*/

//this指针是隐式定义的,每个成员函数都有一个this指针
#include<iostream.h>
class A
{
int x,y;
public:
A(int a,int b)
{
x=a;
y=b;
}
void add(int a,int b)
{
x+=a;
y+=b;
}
void display()
{
cout<<x<<"\n"<<y<<endl;
}
};
void main()
{
A a(2000,1500);
a.add(2,200);
a.display();
}



/*-----测试:
2002
1700
Press any key to continue
------*/

工具软件下载请到:http://www.mantoo.com.cn
  评论这张
 
阅读(226)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017