13
类的函数重载
(
前言
,
定义
,
基类与派生类
,
设计指导
)
1.(
前言
)
1.1override与overload方法的区别
.overload
:在同一类中
,
一个类中通过函数的参数类型不同或者个数不同中,编译器自动调用对应中函数的功能就是
overload(
重载方法
)
.override
在基类函数到派生类中,派生类用重写基类的同名函数的功能就是
override(
覆盖方法
)
1.2
所谓函数重载是指同一个函数名可以对应着多个函数的实现。
例如,可以给函数名
add()
定义多个函数实现,该函数的功能是求和,即求两个操作数的和。
Int sum(int x,int y){return x+y;} //
求
int
之和
Double sum(Double x, Double y){return x+y;} //
求
Double
之和
float sum(float x, float y){return x+y;} //
求
float
之和
每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同。
这就是函数重载的概念。函数重载在类和对象的应用尤其重要。
函数重载要求编译器要求从函数参数的个数和类型上来区分
,
能够唯一地确定调用一个函数时应执行哪个函数代码
.
2.
定义
(
同类函数的重载
)
2.1
按参数的个数不同进行函数重载
int sum(int a,int b){return a+b;}
int sum(int a,int b,int c){return a+b+c;}
int sum(int a,int b,int c,int d{return a+b+c+d;}
2.2
按参数的数据类型进行函数重载
Int sum(int x,int y){return x+y;} //
求
int
之和
Double sum(Double x, Double y){return x+y;} //
求
Double
之和
float sum(float x, float y){return x+y;} //
求
float
之和
3.
基类与派生类
(override
方法
)
在基类与派生类,通常用
override
方法实现重载基类函数
通常在派生类覆盖基类的同名函数来实现对基类的函数重载:在派生类想重载基类的函数,就得在派生类写一个与基类的同名函数,在派生类重写此基类的函数,在派生类调用时,基类的函数就被自动的隐藏掉
//
基类
class BaseClass{
public:
void func() {};
};
//
派生类
class DrivedClass : public BaseClass{
public:
void func() {BaseClass::func();};//
在派生类对基类的同名函数进行
override
void func(int test) {};
};
4.设计指导
1.
函数重载时,要求同名函数在参数个数上不同,或者参数类型不同,否则无法实现重载。
2.
在基类和派生类时,重载只在同一个类中发生,同一个名字的重载函数都必须出现在同一个域中。
3.
要清楚
override
和
overload
的区别
:
在基类函数到派生类时用
override(
覆盖方法
);
在一个类中不同中函数实现时用
overload(
重载方法
)