匹配原则:
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"
操作符重载:
时间: 2024-10-27 08:19:36