小编Eva*_*per的帖子

C++*运算符"已经超载吗?"

我的C++老师认为标准C++中的*运算符"已经过载",因为它可能意味着间接或乘法,具体取决于上下文.他从C++ Primer Plus得到了这个,它指出:

实际上,许多C++(和C)运算符已经过载.例如,*运算符在应用于地址时会生成存储在该地址的值.但是将*应用于两个数字会产生值的乘积.C++使用操作数的数量和类型来决定要采取的操作.(第502页,第5版)

至少有一本其他教科书说的大致相同.据我所知,这不是真的; unary*是与binary*不同的运算符,编译器消除歧义的机制与运算符重载无关.

谁是对的?

c++ operator-overloading

9
推荐指数
1
解决办法
599
查看次数

在C++ 11中,什么时候lambda表达式的绑定变量应该按值捕获?

我有一个Visual Studio 2010 C++程序,其主要功能是:

vector<double> v(10);

double start = 0.0; double increment = 10.0;
auto f = [&start, increment]() { return start += increment; };
generate(v.begin(), v.end(), f);
for(auto it = v.cbegin(); it != v.cend(); ++it) { cout << *it << ", "; }

cout << endl << "Changing vars to try again..." << endl;
start = 15; increment = -1.5;
generate(v.begin(), v.end(), f);
for(auto it = v.cbegin(); it != v.cend(); ++it) { cout << *it << ", "; } …
Run Code Online (Sandbox Code Playgroud)

c++ lambda pass-by-value visual-c++ c++11

8
推荐指数
2
解决办法
3411
查看次数