重载
编译器会根据参数类型来匹配不同的空间
记录函数的参数类型,例如:Mycout@char*@int(该命名永远不会重复)
extern C :采用C方式编译 不会出现命名粉碎机制。
在实现重载当中会有个匹配的过程,匹配过程如下
1、精准匹配:int–int
2.提升匹配:char–int float–double
3.类型转换的匹配:int–unsigned int
当匹配规则出现冲突时,即有多个匹配时,会出现二义性,此时应进行精准匹配来解决,或者是在调用函数时强转如f2((char*)num)
重载应根据业务需求确定,尽量不出现类似int*,类型个数不能太多也不能太少,一般应有这三类:int double string
默认参数
void Mycout(int num=10,bool line=true)
默认实参时候从右至左,调用时从左到右,如果出现二义性,要么使之唯一匹配,要么调用时确定精确参数
内联函数
函数之前+“inline”将不会新建栈,运行效率大大提升
(类似于int num=100,把100拿去用)
坏处是 生成的代码体积会膨胀,inline不是100%会成为内联,根据编译器的判断完成
类型转换
在c++中的类型转化符:
1.static_cast
int num=static_cast<int>(1.0003)
2.const_cast<>
把const转化为非const类型,移除对象的常量性,但不能修改内容
3.reinterpret_cast
强制转化(二进制)一般不用
4.dynamic_cast<>大型框架下使用