C++中重载的一个特例

大家都知道,具有相同名字而形参表不同的函数称为重载函数

这里只是要注意一个特殊的情况:

const形参与非const形参,对于重载而言无本质区别,看下面的例子:

int fun(int a) { return a; } int fun(const int a) { return a; } 

编译时报错:error C2084: function 'int __cdecl fun(int)' already has a body

上面两个函数在本质上是相同的,第二个函数是对第一个函数的重定义。

 

但是,有const引用形参的函数与有非const引用形参的函数是不同的。

下面的例子是一个合法的重载:

int fun(int& a) { return a; } int fun(const int& a) { return a; } 

类似地,带有指向const类型的指针形参的函数与带有指向相同类型的非const对象的指针形参的同名函数是合法的重载,如下例:

int fun(int* a) { return *a; } int fun(const int* a) { return *a; } 

这是重载中比较重要的一点,希望大家一定要注意。

你可能感兴趣的:(C++,c,function,fun)