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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

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

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

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

欄目分類
最近更新