C/C+的区别之函数重载

两个数相加的泛型:

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.覆盖:重写  派生类中同名同参的虚函数覆盖了基类中同名同参的虚函数。(动多态)

猜你喜欢

转载自blog.csdn.net/m0_43407388/article/details/107690750
c+
今日推荐