封装:信息隐藏
继承:代码复用
多态:功能扩展
引用的本质是一个常指针,引用的内部实现是用指针实现
函数重载:形参个数不同,类型不同,顺序不同
用一个函数实现多个重载函数的功能:函数模板
函数的形参分为:数据类型 和 变量名 函数模板将数据类型当参数进行传递
解决的问题:将 数据类型 和算法 进行分离 专注于算法处理, 不需要关心处理的类型
函数模板:用 template 声明模板 <typename 类型名称1, typename 类型名称2>
模板声明只对当前函数有效,其他函数需要重新声明
例:template <typename T>
void mySwap(T &a, T &b)
{
T tmp = a;
a = b;
b = tmp;
}
模板函数的调用:mySwap(a, b) 隐式调用,不指明类型, 让编译器自动推导
mySwap <int/char/double > (a, b) 显示调用
cout 是 ostream(类) 的变量, 是标准输出流的对象
函数模板的注意事项:
- 函数模板可以隐式调用,但不支持隐式的类型转换
int a = 10;
char c = 'A';