5分钟简单了解C++ this指针的概念和作用
C++ 程序到 C 程序的翻译
要想理解 C++ 的 this 指针,我们可以先把下面的 C++ 代码转换成 C 代码:
C 语言是没有类定义 class 关键词,但是有跟 class 类似的定义,那就是 struct 结构体。
m_price 变量是 Car 类的成员变量,那么我们可以把 Car 类和成员变量翻译成如下的 C 代码:
SetPrice 函数是 Car 类的成员函数,但是 C 程序里是没有成员函数这种概念的,所以只能把成员函数翻译成全局的函数:
为什么要加个 this 的指针呢?我们继续往下看。
在这里我们把上面 C++ 程序的 main 函数翻译 C 程序,是这样的:
所以最终把上述的 C++ 程序 转换成 C 程序的代码如下:
所以加 SetPrice 函数的第一个参数 this 指针的作用,就是为了给结构体 Car 域里的变量赋值。
其作用就是 指向成员函数所作用的对象,所以 非静态成员函数中可以直接使用 this 来代表指向该函数作用的对象的指针。
下面的例子可以很好的说明 this 的作用:
输出结果:
20000
20000
接下来我们看下面的代码,你觉得输出结果是什么呢?会出错吗?
答案是正常输出 hello,你可能会好奇明明 p 指针是空的,不应该是会程序奔溃吗?别着急,我们先把上面的代码转换 C 程序,就能理解为什么能正常运行了。
所以,实际上 每个成员函数的第一个参数默认都有个指向对象的 this 指针,上述情况下如果 this 指针指向的对象是空,相当于成员函数的第一个参数是 NULL,那么只要成员函数没有使用到成员变量,是可以正常执行。
那么下面这份代码执行时,就会奔溃了,因为 this 指针是空的,使用了空的指针指向了成员变量 i,程序就会奔溃。
- 标签:黄鸟影院
- 编辑:黄金标
- 相关文章
-
可以退钱了!6月30日截止!
中国共产党百年华诞,您想为建党百年做些什么?您想给自己留下什么样珍贵的记忆?您身边的哪些人或事…
-
警惕!这些不是玩具,安全风险高!别再给孩子玩了!
全文共1003字,阅读大约需要2分30秒 。 10日,中国消费者协会发布 消费提示:警惕!不要让儿童玩具成…
- 一辆共享单车坐了三四个人 如此“拼团”让人担心 莫拿安全当儿戏
- 稀奇!母鸡要“改行” 鸡蛋变成了“腰果”
- 提前感受端午节气氛 记者带您逛一逛美丽的哈尔滨
- 黑龙江:煤矿救援32小时!
- 希望小屋丨课堂上遇“难题” “希望小屋”暖心助力