gpt4 book ai didi

c++ - operator[] 歧义消解

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:58 25 4
gpt4 key购买 nike

菜鸟在这里。以下是我在书中示例中遇到的类定义的片段:

double& operator[](int i);
double operator[](int i) const;

我的问题是:为什么这不是模棱两可的?编译项目文件时,编译器没有给出任何错误。另外,在下面(假设 AnyClass 包含一个 valarray<double> 对象,我想直接访问它):

AnyClass test;
cout << test[2]

编译器使用哪个版本?

最佳答案

它没有歧义,因为 const 是签名的一部分,可用于重载解析。因此,如果您在非 const 对象上使用 operator[],它会选择没有 const 的重载,因为这是最具体的一个。如果您在 const 对象上使用它,它会选择 const 的重载,因为这是唯一适用的。

关于c++ - operator[] 歧义消解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com