Tanky WooRSS

函数重载是的const形参匹配问题

30 Mar 2011
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

仅当形参是引用或指针时,形参是否为const才有影响。即可把const形参和非const形参视为不同的特征标;

而对于普通变量形参,则不能通过形参是否为const来重载。

例如:

#include 
using namespace std;

void wtq(char *m)
{
    cout << "char *" << endl;
} 

void wtq(const char *m)
{
    cout << "const char *" << endl;
} 

int main()
{
    const char p1[10] = "aaaaa";
    char p2[10] = "bbbbb";
    wtq(p1);
    wtq(p2);
} 

输出结果为:

const char *

char *

而对于普通变量形参,则会报错:提示重定义。

另外注意几点:

1.重载时,类型引用和类型被视为同一特征标。

2.不能基于指针本身是否为const去实现函数的重载。