首页 > 代码库 > 函数重载,操作符重载(王桂林视频笔记)

函数重载,操作符重载(王桂林视频笔记)

匹配原则:

1 严格匹配找到则调用

2 通过隐式转换寻找一个匹配,找到则调用

3 上述两项找不到就会报错

技术分享 

 

?(隐式)自动转换类型中 double可以转成 float 但是float转换成double会出错,8字节到4字节,损失精度

? c++允许 int 到 long 和 double 隐式类型转换,遇到这种情况会引起二义性,解决办法可以是使用强制类型转换

? 鉴于上述, 设计的时候尽量避开隐式类型转换

底层实现:命名倾轧 name mangling

技术分享

mystrlen函数的功能是计算字符串的长度,并作为函数值返回

详细:

strlen函数的功能,从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符‘\0‘为止,返回字符串的实际长度。注意不包括 ‘\0‘ 字符

extern 用来扩展作用域,是原来仅限于本文件的作用域扩展到其他文件中,可被重载,变成其他意思:说明某个语句是c语言的语句而非c++的,c语言没有倾轧的概念而c++有,所以用extern可以消除倾轧,若原来重载的文件都同时消除倾轧也是可以运行的

重点:c++要完全兼容c语言,而有些c语言库里的文件是没有被倾轧的,但使用c++在调用时,编译器会自动倾轧,调用就链接不上了,为保证其在c++中不被倾轧,可以在调用前加一个 extern “c"

技术分享

 

操作符重载:

技术分享

 

函数重载,操作符重载(王桂林视频笔记)