C++ 中的this指针详解及实例
发布时间 - 2026-01-11 02:16:17 点击率:次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指针用法示例详解
# 隐式
# 运算符
# 当我们
# 连字号
# 都是
# 是一个
# 是在
# 都有
# 在这里
# 成了
# 两种
# 来访问
# 很有
# 又有
# 我们可以
# 希望能
# 自定义
# 重写
# 谢谢大家
# 您所
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何正确选择百度移动适配建站域名?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
lovemo网页版地址 lovemo官网手机登录
IOS倒计时设置UIButton标题title的抖动问题
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel如何处理文件下载请求?(Response示例)
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何快速登录WAP自助建站平台?
昵图网官网入口 昵图网素材平台官方入口
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速生成专业多端适配建站电话?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
高端企业智能建站程序:SEO优化与响应式模板定制开发
网站制作价目表怎么做,珍爱网婚介费用多少?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Swift中循环语句中的转移语句 break 和 continue
Laravel如何使用Livewire构建动态组件?(入门代码)
香港服务器WordPress建站指南:SEO优化与高效部署策略
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel如何实现用户注册和登录?(Auth脚手架指南)
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Bootstrap整体框架之JavaScript插件架构
制作企业网站建设方案,怎样建设一个公司网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何在阿里云域名上完成建站全流程?
jQuery中的100个技巧汇总
深圳网站制作的公司有哪些,dido官方网站?
java中使用zxing批量生成二维码立牌
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
制作公司内部网站有哪些,内网如何建网站?
,南京靠谱的征婚网站?
javascript中对象的定义、使用以及对象和原型链操作小结
如何基于PHP生成高效IDC网络公司建站源码?
千库网官网入口推荐 千库网设计创意平台入口
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
移动端脚本框架Hammer.js
公司门户网站制作流程,华为官网怎么做?
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在IIS中新建站点并配置端口与物理路径?

