gpt4 book ai didi

c++ - 为什么带有 const 参数的函数声明允许调用带有非常量参数的函数?

转载 作者:行者123 更新时间:2023-12-05 06:50:26 25 4
gpt4 key购买 nike

请注意以下 C++ 代码:

#include <iostream>
using std::cout;

int foo (const int);

int main ()
{
cout << foo(3);
}

int foo (int a)
{
a++;
return a;
}

请注意,foo() 的原型(prototype)采用 const int,而定义采用 int。这个编译没有任何错误......

为什么没有编译错误?

最佳答案

因为 foo 函数的调用者并不关心 foo 是否修改它的变量拷贝。

特别是在 C++03 标准中,以下 2 个片段解释了原因:

C++03 部分:13.2-1

Two function declarations of the same name refer to the same function if they are in the same scope and have equivalent parameter declarations (13.1).

C++03 部分:13.1-3

Parameter declarations that differ only in the presence or absence of const and/or volatile are equivalent. Only the const and volatile type-specifiers at the outermost level of the parameter type specification are ignored in this fashion; const and volatile type-specifiers buried within a parameter type specification are significant and can be used to distinguish overloaded function declarations.

关于c++ - 为什么带有 const 参数的函数声明允许调用带有非常量参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66391873/

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