[英]C++ How to pass reference to function
我有一個類通過引用獲取變量。 類中的一個函數需要調用另一個打印對象的函數。 將引用對象從process()
傳遞到disp()
時會出現問題。 我可以將一個函數的引用傳遞給另一個函數嗎? 如何使用參考實現這一點以及在這種情況下的最佳實踐是什么?
(我知道可以采用其他方法,例如使用指針或按值傳遞給類。但是,我想通過參考了解解決方案。)
class Abc
{
double &a, &b;
public:
Abc(double &var1, double &var2): a(var1), b(var2) {}
void process()
{
//call disp()
disp(a); //Question
}
void disp(double &var)
{
std::cout << var;
}
};
int main()
{
double x=2.2, y=10.5;
Abc obj1(x,y);
obj1.process(); //question
return 0;
}
我可以將引用對象傳遞給函數嗎?
迂腐點:沒有“參考對象”這樣的東西。 引用不是對象。
但是是的,可以傳遞對函數的引用。
將引用對象從
process()
傳遞到disp()
你已經在那里傳遞了一個引用。 程序的那部分是正確的。
你這里確實有問題:
Abc::Abc(double&, double&);
float x=2.2, y=10.5 // anohter bug: probably intended to have a semicolon here
Abc obj1(x,y);
當一種類型 ( float
) 的對象綁定到通過繼承 ( double&
) 不相關的另一種類型的引用時,操作數將轉換為目標類型 ( double
)。 轉換的結果是一個臨時的 r 值。 非常量 l 值引用不能綁定到 r 值,因此程序格式錯誤。
即使引用可以被綁定(例如,如果您使用允許它的語言擴展,或者如果您使用 const 引用),臨時變量的生命周期也只會延長它綁定到的引用變量的生命周期,這是構造函數的參數。 構造函數完成后,成員引用將引用其生命周期已經結束的臨時對象,因此使用這些引用將具有未定義的行為。
簡單的解決方案:使用與引用相同類型的變量: double x=2.2, y=10.5
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.