日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++類的返回值是*this的成員函數問題_C 語言

作者:棉猴 ? 更新時間: 2022-12-23 編程語言

C++類返回值是*this成員函數

當C++類的成員函數其返回值是*this時,表示返回值是調用該成員函數的變量的引用。

例如:

class A
{
public:
? A& func1() {
? return *this;
? }
? int i{0};
}

此時,類A的成員函數func1的返回值是*this,該成員函數的返回值類型是A&。

1 返回值是左值

func1()函數的返回值是類型A的引用,該返回值是左值。也就是說,此時返回的是調用該函數的對象本身,通過該返回值可以調用該對象的其他成員函數或者對其他成員變量進行賦值。

A a;
a.func1().i = 10;

此時類A的對象a的成員變量i的值是10。

2 const成員函數的返回值

在const成員函數中,不能修改對象的成員變量。當const成員函數返回值是*this時,表示返回的是一個const對象的引用。

const A& func2()const {
? return *this;
}

其中,func2()函數是類A的const成員函數,該函數的返回值類型是const A&,而不是A&。此時,如果通過func2()函數的返回值修改對象的成員變量

a.func2().i = 100;

此時的報錯信息為“error C3892: “a”: 不能給常量賦值”。

對C++類成員返回語句return *this的理解

經常會在類似 copy-assignment 的成員函數看到返回語句 return *this ,這類函數通常返回類型是所屬類的引用。

類成員函數的隱式指針 class *this const 經過 *this的解引用后成為此對象本身。此時若成員函數返回類型是 class ,那么返回的將是 this 指向的對象實體的拷貝;

若返回類型是 class& ,那么將返回一個綁定在 this 指向的對象實體上的引用。

原文鏈接:https://blog.csdn.net/hou09tian/article/details/108862875

欄目分類
最近更新