下标运算符接受变量类型的变长参数?

时间:2014-04-23 07:46:47

标签: c++

[]运算符是否接受可变长度参数或变量类型?此行为是否与va_args类似,或者是最后一个隐式传递的参数?

有人可以解释为什么以下在编译期间没有错误吗? (在VS2010中测试)

int main()
{
    typedef std::map<int, std::string> KeyValueMap;
    typedef std::vector<int> IntList;

    IntList l(10);
    int r = l[l, "C", 1];

    KeyValueMap m;
    m[m, 1, "D", 2];

    int* i = new int[10];
    int x = i["a", i, 1];

    return 0;
}

1 个答案:

答案 0 :(得分:6)

逗号(,)是一个运算符,它会计算所有参数并返回最后一个参数。

int x = i["a", i, 1];基本上等同于int x = i[1];