C++ this 指针详解

学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。
正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。
this指针是类的一个自动生成、自动隐蔽的私有成员,它存在于类的非静态成员中,指向被调用函数所在的对象。
全局仅有一个this指针,当一个对象被创建时,this指针就存放指向对象数据的首地址。
class Ctest
{
public:
void Funtest(int iValue)
{
_iValue = iValue;
}
void Print()
{
cout << _iValue << endl;
}
private:
int _iValue;//调用私有变量只能用公有成员接收,成员变量在类中具有全局作用域
};
int main()
{
Ctest test;
test.Funtest(30);
test.Print();
system("pause\n");
return 0;
}
我们来观察对Funtest函数的调用,test.Funtest(),在这里,我们运用了点运算符来访问test对象的Funtest成员,然后调用它。
当我们调用某个成员函数时,实际上是在替某个对象调用它。如果Funtest指向Ctest的成员(例如iValue),则它隐式地指向调用该函数的对象的成员。
成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象。当我们调用那个函数时,用请求该函数的对象地址初始化this.例如:如果调用
test.Funtest(),则编译器负责把test的地址传递给Funtest的隐式形参this。可以等价的认为编译器将该调用重写成了如下形式:
//此处只用于说明调用成员函数实际执行过程 Ctest::Funtest(&test)
在成员函数内部,我们可以直接使用调用该函数的成员,而无需通过成员访问运算符来做到,因为this指针所指的正是这个对象。任何对类成员的直接访问都 被看做是this指针的隐式引用,上面的程序可认为是this->iValue.
this形参是隐式定义的,实际上,任何自定义名为this的参数或变量的行为都是非法的.所以,Funtest函数的定义相当于是
void Funtest(Ctest *const this,int *iVlue)
{
this->_iValue = iValue;
}
this是一个常量指针,不允许改变this中保存的地址
this指针的两种传参方式:
1.参数压栈:当成员函数的参数可变时,遵循_cdecl调用约定
2.ecx寄存器:当成员函数的参数固定时,这时遵循_thiscall调用约定。
当this指针为NULL时编译器可编译通过
class Ctest
{
public:
void Funtest()
{}
}
int main()
{
Ctest *p = NULL;
p->Funtest();
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++
# 中的this指针
# this的详解
# C++中this指针的用法及介绍
# C++中this指针用法详解及实例
# C/C++静态类和this指针详解及实例代码
# C++ 中this指针的用途详解
# 详解C++中的this指针与常对象
# C++基础之this指针与另一种“多态”
# 深度理解c++中的this指针
# C++中this指针用法示例详解
# 隐式
# 运算符
# 当我们
# 连字号
# 都是
# 是一个
# 是在
# 都有
# 在这里
# 成了
# 两种
# 来访问
# 很有
# 又有
# 我们可以
# 希望能
# 自定义
# 重写
# 谢谢大家
# 您所
相关文章:
如何选择域名并搭建高效网站?
如何通过FTP空间快速搭建安全高效网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
建站主机选哪家性价比最高?
建站主机是否属于云主机类型?
javascript基本数据类型及类型检测常用方法小结
高防服务器租用首荐平台,企业级优惠套餐快速部署
c# 在高并发场景下,委托和接口调用的性能对比
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何快速启动建站代理加盟业务?
如何选择美橙互联多站合一建站方案?
c# 服务器GC和工作站GC的区别和设置
建站主机如何选?性能与价格怎样平衡?
网站制作话术技巧,网站推广做的好怎么话术?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
详解jQuery中基本的动画方法
头像制作网站在线制作软件,dw网页背景图像怎么设置?
北京网站制作公司哪家好一点,北京租房网站有哪些?
盘锦网站制作公司,盘锦大洼有多少5G网站?
建站之星安装模板失败:服务器环境不兼容?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
利用JavaScript实现拖拽改变元素大小
哈尔滨网站建设策划,哈尔滨电工证查询网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何批量查询域名的建站时间记录?
,怎么在广州志愿者网站注册?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
ui设计制作网站有哪些,手机UI设计网址吗?
详解jQuery停止动画——stop()方法的使用
如何用腾讯建站主机快速创建免费网站?
如何选择高效响应式自助建站源码系统?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
高性价比服务器租赁——企业级配置与24小时运维服务
网站专业制作公司有哪些,做一个公司网站要多少钱?
如何在阿里云ECS服务器部署织梦CMS网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
Swift中switch语句区间和元组模式匹配
如何用y主机助手快速搭建网站?
企业微网站怎么做,公司网站和公众号有什么区别?
如何用VPS主机快速搭建个人网站?
如何零成本快速生成个人自助网站?
如何快速使用云服务器搭建个人网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
网站制作壁纸教程视频,电脑壁纸网站?
如何高效配置香港服务器实现快速建站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
北京专业网站制作设计师招聘,北京白云观官方网站?
,南京靠谱的征婚网站?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
建站之星后台密码遗忘或太弱?如何重置与强化?
*请认真填写需求信息,我们会在24小时内与您取得联系。