Ale*_*lex 1 c++ operator-keyword
虽然我不知道你不能operator[]在C++中重载以接受多个参数,但我偶然发现了一个似乎对我有意义的声明:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> numbers{1, 2, 3, 4};
int i = 0;
std::cout << numbers[i++,i+=1,i=1,i+1] << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么有人可以解释是否有任何传递多个表达式的好处operator[]?
用mingw g ++ 4.8.1编译,带-std = c ++ 11
您没有将多个参数传递给重载运算符,而是使用逗号运算符来计算单个函数参数.除了让你不喜欢的同事感到困惑之外,没有任何好处.该声明
numbers[i++,i+=1,i=1,i+1]
Run Code Online (Sandbox Code Playgroud)
计算i++,然后i += 1,然后i = 1,再i + 1与返回最后计算的表达式,这是2.
虽然逗号运算符有有效的用例,但这不是其中之一.