来自 操作系统 2020-01-16 14:35 的文章
当前位置: 澳门威尼斯人平台 > 操作系统 > 正文

C++函数重载,函数重载

#include<iostream>
using namespace std;

C++函数重载,函数重载

1.函数重载的概念

  函数重载是指一个函数可以和同一个作用域中的其他函数具有相同的名字 ,但这些同名函数的参数类型、参数个数、返回值以及函数功能可以完全不同。

 

本人自学,教材可能有点老,有问题的话求大家指正!!!谢谢!!!

2.函数重载注意事项

  • 函数重载不能只是函数的返回值不同,至少还要在形参的个数、类型或顺序上有所不同。
  • 应使所用的重载函数的功能相同。如果让重载函数完成不同的功能,是不好的编程风格,这样会破坏程序的可读性。

例题:定义、测试重载函数。

 

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int absolute(int x)
 5 {
 6         return x<0?-x:x;
 7 }
 8 
 9 double absolute(double x)
10 {
11         return x<0?-x:x;
12 }
13 
14 int min(int x, int y)
15 {
16         return x<y?x:y;
17 }
18 
19 int min(int x, int y, int z)
20 {
21         return x<y?(x<z?x:z):(y<z?y:z);
22 }
23 
24 int main()
25 {
26         int a = 3;
27         int b = -8;
28         int c = 6;
29         double d = -5.23;
30         cout << min(a,b) << endl;
31         cout << min(a,b,c) << endl;
32         cout << absolute(a) << endl;
33         cout << absolute(b) << endl;
34         cout << absolute(d) << endl;
35         return 0;
36 }
37 
38 //菜鸟,求大家批评指教,代码编写习惯和规范等等!!!谢谢!!!

 

 

本人自学,教材可能有点老,有问题的话求大家指正!!!谢谢!!!

1.函数重载的概念 函数重载是指一个函数可以和同一个作用域中的其他函数具有相同的名字 ,但这些同名函数的参...

函数重载(overload),函数重载overload

重载的定义及特点

    在同一个类中,允许存在一个以上的同名函数, 只要他们的参数个数或者参数类型不同(不仅指两个重载方法的参数类型不同,还指相同参数拥有不同的参数类型顺序)就构成重载。重载只和参数列表有关系,跟返回值类型无关,即返回值类型不能作为重载的条件。

public void test(int num1, double num2)
{
  System.out.println("num1 = "+num1+"num2 = "+num2);
}

//参数个数不同构成的重载
public void test(int num1, double num2, int num3)
{
  System.out.println("num1 = "+num1+"num2 = "+num2+"num3 = "+num3);
}

//参数顺序不同,和第一个函数构成重载
public void test(double num2, int num1)
{
  System.out.println("num1 = "+num1+"num2 = "+num2);
}

 

重载的定义及特点 在同一个类中,允许存在一个以上的同名函数, 只要他们的参数个数或者参数类型不...

我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬。所以有时候就为了开个瓶,家里要备多种规格的开瓶器。同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开。

//名字相同,但是参数列表不能相同 
//跟缺省值一起结合用,可能会出现报错/冲突 
//返回值不能作为函数重载的条件 
void fun(int a,double b)    
{

然而开瓶器的问题也会发生到程序设计中。比如我们要编写一个函数来求一个数的绝对值,然而整数、浮点型数、双精度型数都有绝对值,但为它们编写的函数返回值类型却是各不相同的。比如:

cout <<"1: "<<a <<' ' <<b <<endl;    
}

int iabs(int a);

void fun(int a,float b)    
{

float fabs(float a);

cout <<"2: "<<a <<' ' <<b <<endl;    
}

double dabs(double a);

void fun(int a,char c='T')
{
cout <<"3: "<<a <<' ' <<c <<endl;
}

这样是不是有点备了多种开瓶器的感觉?我们能不能在程序设计中也做一个多功能的开瓶器,把所有数据类型的求绝对值都交给abs这一个函数呢?

void fun(int a,int b)
{
cout  <<"4: "<<a <<' ' <<b <<endl;
}

在C++中,我们也能够把具有相同功能的函数整合到一个函数上,而不必去写好多个函数名不同的函数,这叫做函数的重(音chóng)载(Overload)。重载的本质是多个函数共用同一个函数名。

int main()
{
fun(12,12.02);   //默认情况下,带小数点的数是double类型的 
fun(12,12.02f);  //如果是float类型要在后面加上f 
fun(12,12);
fun(12,'D');
return 0;
}

我们先来看一个函数重载的实例:(程序6.3)

#include "iostream.h"

int abs(int a);//当参数为整型数据时的函数原型

float abs(float a);//当参数为浮点型数据时的函数原型

double abs(double a);//当参数为双精度型数据时的函数原型

int main()

{

int a=-5,b=3;

本文由澳门威尼斯人平台发布于操作系统,转载请注明出处:C++函数重载,函数重载

关键词: