C++函数重载是使用形参作为特征标,写这篇文章是说明一下const作为函数重载特征的情况:
1、形参为引用时
void func(const int& val)
{
std::cout<<"this is func1..."<<std::endl;
}
void func(int& val)
{
std::cout<<"this is func2"<<std::endl;
}
int main()
{
const int val1= 1;
int val2 = 2;
func(val1); //this is func1
func(val2);//this is func2
return 0;
}
2、形参为指针时
void func(int* p)
{
std::cout<<"this is func1"<<std::endl;
}
void func(const int* p)
{
std::cout<<"this is func2"<<std::endl;
}
int main()
{
int val1 = 1;
const int val2 = 2;
func(&val); //this is func1
func(&val2);//this is func2
return 0;
}
最后加一点补充:
当函数形参为引用的时候如果传递的形参类型不符,则编译器会尝试为实参创建一个临时变量传递给形参,前提是形参为const引用,否则编译器会报错。
因为作为实参的临时变量传递给形参,如果为非const引用,就会失去意义。