gpt4 book ai didi

c++ - C++ 中的重载解析

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

562 页 The C++ Programming Language 4e 中,作者展示了两个函数:

char& operator[](int n) {}
char operator[](int n) const {}

如果我写

char c = someObj[2];

既然解析没有考虑返回类型,那么,会选择哪个函数呢?

我做了几次尝试,它只是为了调用 char& operator[](int n) {},我认为这里定义的 const 函数只是为了让它有机会被调用在某些需要 const 的上下文中。但我不太确定。

这是我的测试代码:

#include <iostream>
using namespace std;

class A {
private:
char p[10] = "abcdefg";
public:
char operator[](int n) const {
cout << "const function" << endl;
return p[n];
}
char& operator[](int n) {
cout << "plain function" << endl;
return p[n];
}

};

int main() {
A a;
a[2];
const char &c = a[4];
}

最佳答案

重载决议中不考虑返回类型。您的重载将根据调用运算符的对象的 const 限定来选择:

int main() {
A a;
a[2];
const char &c = a[4];

const A b;
b[2];
const char &d = b[4];
}

这个的输出是:

plain function
plain function
const function
const function

关于c++ - C++ 中的重载解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990684/

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