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

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

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

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
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去实现函数的重载。

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《函数重载是的const形参匹配问题》有5个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注