C++——重载

  • 重载:根据语义来确定相应的功能

1、函数重载

函数重载:c++简化编程, 通过函数重名来达到简化编程的目的

1)函数重载条件:

函数名相同,参数列表、类型、个数、顺序不同。返回值类型, 不作为重载的标准。

2)匹配规则

C++ 允许, int到long和double,double到int和float,int到short 和 char 等隐式类型转换。 遇到这种情型, 则会引起二义性。添加转换OK; ex: float a;  print(int a)

(1) 严格匹配, 找到则调求一个匹配, 找到则用。

(2)通过隐式转换寻调用。

3)重载原理

C++利用 Name Mangling(命名倾轧)技术,来改变函数名,区分参数不同的同名函数

底层实现原理: 用 v-c- i-f- l- d 表示 void char int float long double及其引用。

比如多个 func_i (int a)     func_f_i (float a, int b) --> 底层会进行命名倾轧,改变函数名。

4)反倾轧 

反倾轧 C++完全兼容C (语法+标准C库,不会参加倾轧)

C++ 默认所有函数倾轧。若有特殊函数不参与倾轧,则需要使用 extercn "C" 来进行声明。在{ } 括号内实现C的不倾轧

Extern “C”

{

             Void func (int a);

             Void func (char b);  à 反倾轧 和C语言一样 发生冲突

}

包含头文件时,要么都倾轧,要么都不倾轧。


2、操作符重载

前面用到的<<本身在 C 语言中是位操作中的左移运算符。 现在又用作流插入运算符, 这种一个运算符多种用处的现像叫作重载。
在 C 语言中本身就用重载的现像, 比如 & 既表示引用操作符、取地址, 又表示位操作中的与。
*既表示解引用, 又表示乘法运算符。 只不过 c 语言并没有开放重载机制。
C++提供了运算符重载机制。 可以为自定义数据类型重载运算符。 实现构造数据类型也可以像基本数据类型一样的运算特性。
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值