两个数相加的泛型:
C:
#define Sum(a,b)(a+b)
int main()
{
int a=10;
int b=20;
int rt=Sum(a,b);
double rt2=Sum(10.1,10.2);
}
宏函数-->预编译-->替换-->没有类型检查和安全检查 不安全
void* Sum(void* a,int alen,void*b,int blen);
void*泛型[) 半开半闭区间
void* 容易越界 (起始位置+长度) 确定区间大小
因为
C语言中符号生成规则只和函数名有关_Sum
C++符号生成和函数返回值+函数名+函数参数列表
C++:
?Sum@@YAHHH@Z
?Sum@@YANNN@Z
函数返回值不同就不能构成重载
函数重载:1.同名2.不同参数3.同一作用域
C++三大特征:封装,继承,多态
多态:
静多态:函数重载,模板 (编译阶段确定函数调用)
动多态:继承和虚函数 ( 运行确定函数调用)
同名函数的三种关系:
1.重载:重定义 编译阶段确定函数调用的过程
2.隐藏
3.覆盖:重写 派生类中同名同参的虚函数覆盖了基类中同名同参的虚函数。(动多态)