栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++类关键字this解析

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++类关键字this解析

C++中的this关键字的作用:当类对象调用成员函数时,编译器会将类对象的地址赋值给隐含的this形参,在成员函数中对类成员的访问都将通过this指针来进行访问。

C++中This关键字的本质:指向类类型的常量指针,假设类名为student,则this指针的类型为student* const。

这样一来,让我们看看如何来理解const成员函数,在这之前,先来看一看普通成员函数的调用。

                                                                图1-普通成员函数调用

                                                                图2-普通函数调用解析

那么const成员函数的意义是什么呢?试想一下,如果将图1中exa1定义为const变量,那么图一中的程序还能通过编译吗?

答案是:显然不能,因为我们已经说过this的本质是常量指针,对于this,student* const = const

student很明显是一个语法错误,this并不是一个指向常量的指针。

所以const成员函数的意义就是将默认的student* const  this 变为 const student* const this。以便能够让const类对象调用。

请看下图:

                                                  图3-const类对象无法调用普通成员函数 

                                                            图4-修改为const成员函数 

咦?为什么会报错呢?

哈哈!我是不是说了呀,此时的this的类型是const student* const 。那这是不是代表着不能通过this来修改类对象的成员了呢?

答案当然是的,此时在const成员函数中无法修改类对象的成员(成员函数和成员变量),这与const 类对象对象的特性相符。

但是!要注意一点,类中的static成员属于类,而不属于类对象,所以当编译器发现通过this指向的是static成员时,它就知道这个不是属于const类对象的内容,可以修改,也即可以通过编译。

如下图:

                                                                图5-最终正确结果

嘿嘿,到此结束! 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号