0
点赞
收藏
分享

微信扫一扫

第八课 重载函数(上)

素锦时年_1b00 2022-04-07 阅读 40
C++重载

第八课 重载函数(上)

文章目录

一、引入

一个动词可以跟很多的名词进行搭配,它们搭配出来的含义可能各不相同。这就类似于重载。

重载(overload):

  • 同一个标识符在不同的上下文有不同的意义

函数重载

  • 用同一个函数名,来定义不同的函数

  • 当函数名和不同参数搭配时函数的含义不同

    int func(int x)
    {
    	return x;
    }
    int func(int a, int b)
    {
    	return a + b;
    }
    // 调用
    int main(char *argc, char **argv)
    {
    	func(1);
    	func(1, 3);
    	return 0;
    }
    

二、函数重载限制

函数重载至少满足下面一个条件

  • 参数个数不同
  • 参数类型不同
  • 参数顺序不同

三、函数重载和默认参数

int func(int a, int b)
{
	return a + b;
}
int func(int a, int b, int c = 1)
{
	return a + b + c;	
}
int main(char *argc, char** argv)
{
	func(1, 2);
	return 0;
}

这种在编译时期会进行报错,因为编译器不知道调用哪一个。特性冲突!

四、编译器调用重载函数准则

  • 将所有同名函数作为候选者

  • 尝试寻找可行的候选函数

    精确匹配实参

    通过默认参数1能够匹配实参

    通过类型转换匹配实参

  • 匹配失败

    最终寻找道德候选函数不唯一,出现二义性,编译失败

    无法匹配所有候选者,函数未定义,编译失败

五、注意事项

  • 重载函数在本质上时相互独立的不同函数
  • 重载函数的函数类型不同
  • 函数返回值不能作为函数重载的重要依据
  • 函数重载是由函数名和参数列表决定的

六、小结

函数重载是C++中引入的概念

函数重载用于模拟自然语言中的词汇搭配

函数重载使得C++具有更丰富的语义表达能力

函数重载的本质为相互独立的不同函数

C++中通过函数名和函数参数确定函数调用

举报

相关推荐

0 条评论