2016-04-30 81 views
5

在C一個變量綁定到其他兩個++,我們可以用相同的參考定義變量:c + +通過引用

int foo = 3; 
int &bar = foo; 

然後,將下面的代碼

cout << foo << " " << bar; 

將打印

3 3 

,因爲bar的「值」與參考值foo的值相關(&)。我想知道,是否有辦法將「bar」的值與兩個變量相關聯?假設我有三個變量:geddy,neil和alex,我希望neil始終等於alex + geddy。有沒有辦法兩個寫這樣的東西:

int alex = 4; 
int geddy = 5; 
int &neil = alex + geddy; 

所以,尼爾將返回9?那麼,如果我把alex變成7,尼爾會返回12嗎?

+0

C++不能按你想要的方式工作。如果'alex'或'geddy'改變,'neil'不會在賦值後動態地改變它的值。沒有語法來實現這一點。 – drescherjm

+0

這不僅僅是一個功能嗎?此外,如果你試圖將某些東西分配給'neil',會發生什麼? – Kateract

+0

我認爲「完全廢話」有點苛刻。我錯放了一個「&」。無論如何,它現在是固定的。 – awwsmm

回答

6

不,不是真的。你可以做一個函數或仿函數:

int alex = 4; 
int geddy = 5; 

auto neil = [&]() { return alex + geddy; }; 
std::cout << neil() << "\n"; 
+0

那很不幸。但如果這是我獲得的最好的結果,我必須弄清楚如何使用它。謝謝! – awwsmm

+2

@AndrewWatson:你可以在類類型的對象上作爲一個轉換運算符自動執行'()'調用,這樣你就可以得到你顯然想要的符號。但是,讓事情隱含起來往往是一個Ungood Idea™,尤其是當它不能消除冗長時。在'std :: cout << neil()<<「\ n」'中,讀者可以看到它做了什麼,有一個函數調用,但是在'std :: cout << neil <<「\ n」'該呼叫並不明顯。這就是說,聽起來好像你真的想要*電子表格功能,而不是C++程序。電子表格可以成爲解決實際問題的良好*特設解決方案。 –