本小节主要是想通过重载来导出模板
首先来熟悉几个概念的东西:
1 什么是重写
2 什么是重载
来个小总结吧:
1 成员函数重载特征:
a 相同的范围(在同一个类中)
a 相同的范围(在同一个类中)
b 函数名字相同
c 参数不同
d virtual关键字可有可无
2 重写(覆盖)是指派生类函数覆盖基类函数,特征是:
a 不同的范围,分别位于基类和派生类中
b 函数的名字相同
c 参数相同
d 基类函数必须有virtual关键字
3 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
a 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。
b 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏
相信对上面的概念都不会很陌生吧!那我们就来进入今天的主题
比如我们想交换两个数据
交换两个整数如下:
#include <iostream>
using namespace std;
inline void IntSwap(int &a , int & b);
int main()
{
int a = 3, b = 4;
IntSwap(a, b);
cout<<"a:"<<a<<"b:"<<b;
cout<<endl;
system("pause");
return 0;
}
inline void IntSwap(int &a , int & b)
{
int temp = a;
a = b;
b = temp;
}
那么假如我们又要交换两个double类型的的呢
inline void IntSwap(double &a , double & b)
{
int temp = a;
a = b;
b = temp;
}
也可以简单的这样修改,来达到我们的目的是吧,假如我们又要变成char, string .....等,是不是就没那么方便了呢,那么是否没有达到代码的重用呢?
下面我们
来给出模板达到我们的效果
模板是实现类属机制的一种工具,它的功能非常强,它是无约束类属机制和约束类属机制的集合。它可以让用户构造模板函数。
inline void Swap(___ &a , ____ & b)
{
___ temp = a;
a = b;
b = temp;
}
这个就可以看成上面的一个模板吧!不知道你看了这个例子,入门了么?
当然模板远远还不止介绍的这些,不过希望你了解概念,那么下面会更轻松,下面将深入介绍类模板和函数模板