我在 Boost 文档的示例中遇到了这段代码:
std::vector<int> input;
input += 1,2,3,4,5,6,7,8,9;
真可爱。Boost 有一个 operator+= 模板,它利用了逗号在大多数情况下是一个运算符这一事实。(明智地,C++ 不允许黑客重载“运算符”。)
我也喜欢写可爱的代码,所以我用逗号操作符玩了一些。我发现了一些对我来说很奇怪的东西。你认为下面的代码会打印什么?
#include <iostream>
int main() {
int i;
i = 1,2;
std::cout << i << ' ';
i = (1,2);
std::cout << i << std::endl;
}
你猜对了。VC++ 2012 打印“1, 2”。那是怎么回事?
[编辑:我应该更准确。应该说 C++ 不允许重载 int 列表中的运算符“,”。或者更好的是,什么都没有。',' 运算符可以为类和枚举重载。]