網(wǎng)站首頁 編程語言 正文
C++類返回值是*this成員函數(shù)
當(dāng)C++類的成員函數(shù)其返回值是*this時(shí),表示返回值是調(diào)用該成員函數(shù)的變量的引用。
例如:
class A
{
public:
? A& func1() {
? return *this;
? }
? int i{0};
}
此時(shí),類A的成員函數(shù)func1的返回值是*this,該成員函數(shù)的返回值類型是A&。
1 返回值是左值
func1()函數(shù)的返回值是類型A的引用,該返回值是左值。也就是說,此時(shí)返回的是調(diào)用該函數(shù)的對象本身,通過該返回值可以調(diào)用該對象的其他成員函數(shù)或者對其他成員變量進(jìn)行賦值。
A a;
a.func1().i = 10;
此時(shí)類A的對象a的成員變量i的值是10。
2 const成員函數(shù)的返回值
在const成員函數(shù)中,不能修改對象的成員變量。當(dāng)const成員函數(shù)返回值是*this時(shí),表示返回的是一個(gè)const對象的引用。
const A& func2()const {
? return *this;
}
其中,func2()函數(shù)是類A的const成員函數(shù),該函數(shù)的返回值類型是const A&,而不是A&。此時(shí),如果通過func2()函數(shù)的返回值修改對象的成員變量
a.func2().i = 100;
此時(shí)的報(bào)錯(cuò)信息為“error C3892: “a”: 不能給常量賦值”。
對C++類成員返回語句return *this的理解
經(jīng)常會在類似 copy-assignment 的成員函數(shù)看到返回語句 return *this ,這類函數(shù)通常返回類型是所屬類的引用。
類成員函數(shù)的隱式指針 class *this const 經(jīng)過 *this的解引用后成為此對象本身。此時(shí)若成員函數(shù)返回類型是 class ,那么返回的將是 this 指向的對象實(shí)體的拷貝;
若返回類型是 class& ,那么將返回一個(gè)綁定在 this 指向的對象實(shí)體上的引用。
原文鏈接:https://blog.csdn.net/hou09tian/article/details/108862875
相關(guān)推薦
- 2022-09-09 pycharm中創(chuàng)建sql文件及模板的過程_python
- 2022-12-13 C++?Boost?Pool超詳細(xì)講解_C 語言
- 2023-04-12 你真的理解C語言qsort函數(shù)嗎?帶你深度剖析qsort函數(shù)_C 語言
- 2021-12-14 linux下多線程中的fork介紹_Linux
- 2022-11-14 react裝飾器與高階組件及簡單樣式修改的操作詳解_React
- 2022-12-27 python中內(nèi)置庫csv的使用及說明_python
- 2022-07-19 Linux——磁盤管理與文件系統(tǒng)
- 2022-03-28 詳解Python操作Excel之openpyxl_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支