C++:重载、隐藏和重写

1.什么是重载呢?
重载:同一个作用域,相同函数名,参数列表不同,与返回值是否相同没有关系,重载又称静态多态
重载的作用:减轻程序员对函数名的记忆负担,可让所有功能相同的函数使用同一个名字。

参数列表不同可表现在:
(1)参数个数方面
 例如:int Add(int i,int j);
      int Add(int i,int j,int k);
(2)参数类型方面
例如:int Add(int left,int right);
     char Add(char left,char right);
 (3)参数的次序方面(是<参数类型>的次序,比如是一个int和一个char,这样互换顺序可以重载,不能是两个int交换次序)
 例如:int Add(int left,char right);
      int Add(char right,int left);
//参数类型方面
运行环境:vs2013,win10
#include<stdlib.h>
#include<iostream>
using namespace std;
int Add(int left, int right)
{
    return left + right;
}
float Add(float left, float right)
{
    return left + right;
}
int main()
{
    cout << Add(1, 2) << endl;
    cout << Add(1.1f, 2.2f) << endl;
    system("pause");
    return 0;
}

这里写图片描述

//参数个数方面
#include<stdlib.h>
#include<iostream>
using namespace std;
int Add(int i, int j)
{
	return i + j;
}
int Add(int i, int j, int k)
{
	return i + j + k;
}
int main()
{
	cout << Add(1, 2) << endl;
	cout << Add(1, 2, 3) << endl;
	system("pause");
	return 0;
}

运行结果:
这里写图片描述

//参数次序方面
#include<stdlib.h>
#include<iostream>
using namespace std;
int Add(int left, char right)
{
	return left + right;
}
int Add(char right, int left)
{
	return right + left;
}
int main()
{
	cout << Add(1, '2') << endl;
	cout << Add('1',3) << endl;
	system("pause");
	return 0;
}

运行结果:
这里写图片描述

2、什么是隐藏呢?
隐藏:又叫同名隐藏,在继承体系中,基类和派生类有相同的名字的成员,如果使用派生类对象调用和基类中同名的成员,会先调用派生类自己中的此成员,会把基类中的此成员隐藏。

相同名字的成员:
   可以是同名的成员变量或者同名的成员函数,和此变量或此函数的类型无关
例如:
   1.在基类中某变量是int型,在派生类中此变量是char型,这样也会发生同名隐藏
   2.在基类中某函数是int型,在派生类中此函数是char型,这样也会发同名隐藏

如何解决同名隐藏问题?

1.若想访问基类中的成员或函数,加上<<类作用域限定符>>就好
2.那就是不要定义相同名字的成员或函数。

3、什么是重写呢?
重写:在继承体系中,如果基类中有虚函数,在派生类中也有同名的虚函数,并且基类和派生类中同名的虚函数原型相同。

原型相同表现在:
1.返回值相同;
2.函数名形同;
3.参数相同
注:协变和析构函数也可以构成重写
协变:基类返回基类的指针或引用,派生类返回派生类的指针或引用,不满足:函数返回值
析构函数:不满足函数名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值