gpt4 book ai didi

c++ - 从非常量对象调用 const 函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:01 25 4
gpt4 key购买 nike

我在使用 const 函数和 const 对象时遇到函数重载问题。有人可以解释为什么打印“const foo int& int”而不是“foo int char&”吗以下代码?

struct A 
{
void foo(int i, char& c) { cout << "foo int char&" << endl;}
void foo(int& i, int j) const { cout << "const foo int& int" << endl;}
};

int main() {
A a;
const A const_a;
int i = 1;
char c = 'a';
a.foo(i,i);
}

谢谢,

最佳答案

一切都清楚了。您使用两个 int 类型的参数调用了一个函数。有两个候选函数。第一个参数为 int 类型,第二个参数为 char 类型。因此,要调用此函数,第二个参数应隐式转换为 char & 类型。但它是一个收缩转换,因为 int 的等级高于 char 的等级。因此将创建一个临时对象,但临时对象只能与 const 引用绑定(bind)。第二个函数不需要对其参数进行任何转换。所以它会被调用。

关于c++ - 从非常量对象调用 const 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21629647/

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