C 類的成員函式的連續呼叫與返回值問題

2022-06-12 16:15:11 字數 1281 閱讀 7198

一、返回值問題

1 #include 2

3using

namespace

std;45

classx6

14};

1516

intmain()

17

此處set1函式的返回值為x,而非x&,所以x.set1(6)返回的是x的乙個副本,並非x物件本身,但是return之前的語句,即此處的a = b,仍是對x物件本身進行操作的(因為是物件x呼叫的此函式,即此處的a仍為x.a,因為a不可能是憑空拷貝出來的),只是返回值為x物件的副本而已,所以x.a的值仍然被修改為了6.

二、連續呼叫問題

(1)set1與set2的返回值是引用

1 #include 2

3using

namespace

std;45

classx6

13 x& set1(int

b)14

1819 x& set2(int

b)20

2425

private:26

int a = 3;27

};28

29int

main()

30

如果set1與set2的返回值是引用,那麼

x.set1(6).set2(7).display();     //等價於x.set1(6);  x.set2(7);  x.display(); 

所以此處輸出為:7   7

(2)set1與set2的返回值不是引用

1 #include 2

3using

namespace

std;45

classx6

13 x set1(int

b)14

1819 x set2(int

b)20

2425

private:26

int a = 3;27

};28

29int

main()

30

如果set1與set2的返回值是引用,那麼

x.set1(6).set2(7).display();     //不等價於x.set1(6);  x.set2(7);  x.display(); 此時後面的.set2(7).display()是對x.set1(6)返回的副本進行操作,所以此處只有x.set1(6)對原物件的值進行了操作

故此處輸出為:7   6

C 類成員函式返回類的物件

1.類成員函式臨時物件 2.類成員函式返回持久物件 3.類成員函式返回指標 類成員函式返回類的物件 include include using namespace std class a str1 無參構造str1 str2 無參構造str2 cout 無參構造呼叫 void setarr a in...

c 類的成員函式的呼叫

我知道c 有乙個虛函式列表,物件有指向虛函式列表的指標,對於有虛函式的類物件呼叫虛函式時通過虛函式列表裡面的指標實現的。但是對於普通的非虛函式是怎麼實現呼叫的呢 是怎麼找到非虛函式的入口位址?好像類物件裡面只有類的一些資料成員。求解惑 求詳細的記憶體層次的變化 2013 09 10 20 39 提問...

類成員函式呼叫的細節

class concrete void printerror private int val void main 為什麼會出現這種情況呢?原來是,函式定義的時候,就一直存在了。即無聊是否 例項化了乙個物件,print 這個函式,都是存在的。所以 pc print 是可以找到函式的入口的。只是這時候,...