博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ this 指针
阅读量:6884 次
发布时间:2019-06-27

本文共 833 字,大约阅读时间需要 2 分钟。

类的(非静态)成员函数具有一个附加的隐含形参,即指向该类对象的一个指针。这个隐含形参命名为this,与调用成员函数的对象绑定在一起。成员函数不能定义this形参,而是由编译器隐含地定义。成员函数的函数体可以显式使用this指针,但不是必须这么做。如果对类成员的引用没有限定,编译器会将这种引用处理成通过this指针的引用。

何时使用this指针

尽管在成员函数内部显式引用this通常是不必要的,但是一种情况下必须这样做:当我们需要将一个对象作为整体引用而不是引用对象的一个成员时。最常见的情况是在这样的函数中使用this:该函数返回对调用该函数的对象的引用

返回*this

在单个表达式中调用一些操作时,操作必须返回一个引用,该引用指向执行操作的那个对象。和其他指针一样,可以通过对this指针解引用来访问this指向的对象

从const成员函数返回*this

在普通的非const成员函数中,this的类型是一个指向类类型的const指针。可以改变this所指向的值,但不能改变this所保存的地址。在const成员函数中,this的类型是一个指向const类类型对象的const指针。既不能改变this所指向的对象,也不能改变this所保存的地址。

不能从const成员函数返回指向类对象的普通引用。const成员函数只能返回*this作为一个const引用

基于const的重载

基于成员函数是否为const,可以重载一个成员函数。基于一个指针形参是否指向const,可以重载一个函数。const对象只能使用const成员。非const对象可以使用任一成员,但非const版本是一个更好的匹配。

可变数据成员

有时我们需要在const函数内修改类成员,可以通过声明为可变数据成员来实现,要将数据成员声明为可变,必须将关键字mutable放在成员声明之前。

转载于:https://www.cnblogs.com/ykzou/p/4983960.html

你可能感兴趣的文章
承接上面一遍的(后续步骤)
查看>>
杂笔感想
查看>>
Source Insight 常用设置
查看>>
android anr什么意思?
查看>>
视频: DroidPilot - 增强多应用集成测试 - V2.1.0 (新)
查看>>
python实现逐行替换超大文件中的字符串
查看>>
软件工程例子
查看>>
python全栈开发,Day43(引子,协程介绍,Greenlet模块,Gevent模块,Gevent之同步与异步)...
查看>>
异步编程与多线程编程的联系和区别
查看>>
单例模式(Singleton Pattern)
查看>>
SQL Server
查看>>
pre标签内文本自动换行
查看>>
RCF的简单使用教程以及什么是回调函数
查看>>
java的Pattern类
查看>>
2019.2.18 区块链论文翻译
查看>>
HDU-统计难题
查看>>
python的PIL模块安装
查看>>
数据结构与算法(0)-四则运算
查看>>
ASP.NET-FineUI开发实践-17
查看>>
BETA 版冲刺前准备
查看>>