2016-04-30 38 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++程序。电子表格可以成为解决实际问题的良好*特设解决方案。 –