代码之家  ›  专栏  ›  技术社区  ›  Bizzu

如何重载运算符[][]

  •  0
  • Bizzu  · 技术社区  · 8 年前

    我的问题是如何重载运算符[][]?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Bathsheba    8 年前

    正确的术语是运算符 过载 .

    实施某种 [][] 要求您第一次返回代理对象 [] []

    ()() 可以用类似的方法完成。

    对于 流派,请参阅 What is the "-->" operator in C++?

        2
  •  1
  •   AOK    8 年前

    [][]... , ()()... --> --->

    例如 [][][] ,适用 [] 并返回某个左值 [] 再次应用,然后第三次应用。所以没有实际的 [][][] ,但它只是 [] 应用3次。

    int a[2] = {0,1};
    int b[3] = {2,3,4};
    int *c[2] = {a,b};
    
    c[0][1]; // [0] first extracts 'a' from 'c', then [1] extracts 1 from a (the value in the second index).
    

    这同样适用于 ()()() .

    也遵循相同的想法,除了这里它不是相同运算符的重复组合,而是 -- ,它将返回左值,然后将其减少1,并且 > ,它将比较左侧和右侧。