我正在檢查一本 c 書,并放置了一個旨在使類函式可級聯的函式。在本書中,他們通常在類中創建函式以回傳類的參考而不是類的值。我測驗了按值或按參考回傳一個類,它們都做同樣的事情。有什么區別?
#include<iostream>
using namespace std;
/*class with method cascading enabled functions*/
class a{
private:
float x;
public:
a& set(float x){
this->x = x;
return *this;
}
a& get(float& x){
x = this->x;
return *this;
}
a print(){
cout << "x = " << x << endl;
return *this;
}
};
int main(){
a A;
A.set(13.0).print();
return 0;
}
結果
PS J:\c-c > g -o qstn question1.cpp
PS J:\c-c > .\qstn
x = 13
因為您會注意到此代碼按預期作業。但是這里發生的詳細情況?
uj5u.com熱心網友回復:
首先閱讀按參考傳遞與按值傳遞有什么區別?
現在你已經讀完了,讓我們嘗試一個稍微復雜一點的例子,這樣我們就能真正看到區別:
int main(){
a A;
A.set(13.0).set(42).print();
A.print();
return 0;
}
如果我們通過參考回傳A將被修改set(13.0),然后A被回傳并再次被修改set(42)。輸出將是
x = 42
x = 42
但是如果我們按值回傳A將被修改set(13.0),然后將回傳一個新的臨時a副本A。此副本由 修改set(42),而不是A。輸出將是
x = 42
x = 13
我們未能級聯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/506485.html
上一篇:輸出不包括我的陣列的所有輸入
下一篇:在Go中處理指向nil指標的指標
