gpt4 book ai didi

c++ - c++中的模糊函数

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

我想知道为什么这些声明不起作用(不兼容)

void f(int); //p1
void f(const int);//p2
void f(int &);//p3
void f(const int &);//p4

如果我理解得很好,编译器将不会发现 (int &) 和 (const int &) 之间的区别如果我写 f(12) 它将无法在两个第一个声明之间进行选择..我说得对吗?

最佳答案

p3 和 p4 是完全明确和可区分的,p1 和 p2 则不是。 (当然,p1/p2 与 p3 和 p4 是有区别的。)

原因是值参数上的顶级 const 是不可检测的,实际上在声明中是无用的。例如,您可以执行以下操作:

void foo(int x); // declaration
// ...
void foo(const int x){
// definition/implementation
}

此处的const 是一个实现细节,它对调用者来说并不重要,因为无论如何您都会进行复制。该拷贝也是它无法与 int 区分开来的原因,从调用方来看,它完全相同

请注意,const int& r 没有顶级 const,它是引用常量整数的引用(引用始终是常量)。对于指针,如果未声明 const 可能会更改,另请参见 this question用于放置 const 的位置。

关于c++ - c++中的模糊函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122294/

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