0
点赞
收藏
分享

微信扫一扫

c++函数重载

函数重载指的是可以有多个同名的函数,因此对名称进行了重载。函数重载的关键是函数的参数列表,如果参数数目或参数类型不同,则特征标也不同。

void print(const char *str,int width);

void print(const char *str);

上面2个参数数目不同,所以是重载函数。

void print(int i,int width);

这个与上面2个参数类型不同,所以也是重载函数。

void print(long l,int width);

这个与上面的参数也不同,所以也是重载函数。

1、但是这里面有个问题,如果传入的参数类型不在任何一个函数时,情况就有些复杂。

unsigned int year = 2000;
print(year , 6);

print函数没有unsigned int参数类型,但是可以转换成int或long,如果通过转换可以调用的函数超过1个时,是会调用错误的。

2、引用类型和类型本身是不区分的

void f(double x);

void f(double &x);

3、匹配函数时,不区分const和非const变量

void drivel(const char *bits);

调用drivel时,可以传入非const变量

void d(char *bits);

调用d时,不能传const变量

4、只有返回值不同类型时,不是重载函数

虽然函数重载很吸引人,但也不要滥用。仅当函数基本上执行相同的任务,但使用不同形式的数据时,才应采用函数重载。那是否可以使用默认参数来实现同样的目的?

使用一个带默认参数的函数要简单些。只需编写一个函数(而不是两个函数),程序也只需为一个函数(而不是两个)请求内存;需要修改函数时,只需修改一个。然而,如果需要使用不同类型的参数,则默认参数便不管用了,在这种情况下,应该使用函数重载。

举报

相关推荐

0 条评论