函数重载

来源:互联网 发布:c语言完全数及其因子 编辑:程序博客网 时间:2024/05/07 13:50

以下可以视为重载:

int fun(int val, char* str);
char fun(char* str, int val);

这叫重复定义不是重载

int add(int x,int y);
float add(int x,int y);


重载:

仅返回值不同不形成重载。必须参数的个数或类型不同。对于类的成员函数,还有const性不同也能形成重载。另外,异常声明不同也不构成重载。

函数的重载是根据形式参数的个数或类型来的,不是根据返回值,企图根据返回值来实现重载会引起编译错误。

这些条件一个不相同那就是不同的函数,而能构成重载(即相同函数名不同函数实现)的有:条件2,条件3
一个理解原则:
哪些条件在函数运行之前需确定,那些就能构成的重载
因为重载解析,就是编译器在选择哪个函数实现被运行,这当然是在函数执行之前进行的了,所以
条件1函数返回值,是在函数运行之后才得到,所以并不能构成重载
条件4异常规范,也需函数运行之后,才能知道抛出不抛出异常,抛出什么类型的异常,所以也不能



参数类型并不完全一致的情况下,参数位置不同仍然可以构成重载

0 0
原创粉丝点击