C++ c+中的模糊函数+;
我想知道为什么这些声明不起作用(不兼容) 如果我理解得很好,编译器将不会发现(int&)和(const int&)之间的区别 如果我写f(12),它将无法在前两个声明之间进行选择。。C++ c+中的模糊函数+;,c++,overloading,C++,Overloading,我想知道为什么这些声明不起作用(不兼容) 如果我理解得很好,编译器将不会发现(int&)和(const int&)之间的区别 如果我写f(12),它将无法在前两个声明之间进行选择。。 我说的对吗?p3和p4是完全明确和可区分的,p1和p2不是。(当然,p1/p2与p3和p4是有区别的。) 原因是值参数的顶级const在声明中是不可检测的,实际上是无用的。例如,您可以执行以下操作: void foo(int x); // declaration // ... void foo(const int
我说的对吗?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
,则可能会更改),请参见放置const
的位置
void foo(int x); // declaration
// ...
void foo(const int x){
// definition/implementation
}