1. 重载的二义性错误
重载的规则:参数不同
Paste_Image.png区分精准和提升匹配
当匹配有二义性的时候,注意找到错误
2. 默认实参
Paste_Image.png直接在参数里面传入num
这样就可以直接调用mycout();
Paste_Image.png二义性:编译器无法找到与之唯一匹配的东西
解决方法:1. 修改参数 2. 强制转化
三、内联函数
在函数名前面加上“inline”表示内联函数
内联函数的优缺点:
好处:1. 不会新建栈 2. 将代码展开 运行的效率大大提升
坏处:生成的体积会膨胀 .exe会很大
但加上inline不一定100%成为内联函数
(还是没懂inline函数是啥 ...里面怎么用)
编译器在什么时候使用inline函数:
- 根据里面的栈的使用情况来解析。节约跳转call的时间
- 分配栈的时候可以放在同一个函数里,一次性分配
- 代码简单,展开少。函数调用少,调用层次少。
3. 类型转换
C语言中的类型转换:
强制转换 int num = (int) 1.0003
c++语言转换方式:
- int num = static_cast<int>(1.0003) // 不是强制转换,只是表示转换。int不能转char
- 也可以用const_cast <>(); //可以移出对象的常量性 变成非const
- reinterpret_cast <>(); //危险..强制转换,二进制的层面的转换
引用和指针的区别
引用(类型名 & 引用名-> int &ref = num,val = 100;)
- 引用是变量的别名,没有独立的内存空间,他和指向的变量共用内存空间。所以它必须指向一个变量,
- 引用被确定后就不能更改,不能指向其他变量。
指针
- 指针拥有独立的内存空间
- 但是指针指向的某个变量的地址之后, 还可以指向另外的一个变量地址
引用!啊!!啊!什么鬼啊! 我不学了
网友评论