目录
C++支持函数重载的原理--名字修饰(name Mangling)
1、做参数(a、输出型参数 b、对象比较大,减少拷贝,提高效率) 这些效果,指针也可以,但是引用更方便
内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求:
inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址 了,链接就会找不到。
2、加静态static,修饰函数时,与全局函数相比,有链接属性,只在当前文件可见。(不会进符号表)
什么是c++?
C++关键字(C++98)
C++总计63个关键字,C语言32个关键字。
以下是学习c++时会用到的关键字。
一、命名空间
命名空间定义
1.正常的命名空间的定义
命名空间域
展开命名空间
std:所有C++库命名空间
命名空间可以嵌套
二、C++输入&输出
<<:
>>:
ps:关于cout和cin还有很多更复杂的用法,比如控制浮点数输出精度,控制整形输出进制格式等 等。因为C++兼容C语言的用法,这些又用得不是很多,我们这里就不展开学习了。
三、缺省参数
缺省/默认参数:
全缺省(给出所有参数):
半缺省(从右往左连续给):
四、函数重载
C++支持函数重载的原理--名字修饰(name Mangling)
五、引用(别名)
引用概念
使用方法:
引用特性:
常引用:只能权限缩小,不能权限扩大
使用场景:
1、做参数(a、输出型参数 b、对象比较大,减少拷贝,提高效率)
这些效果,指针也可以,但是引用更方便
2、做返回值(a、修改返回对象 b、减少拷贝提高效率)
面试题:引用和指针的区别:
如图:
六、内联函数
面试题:宏的优缺点
知识衍生:实现两个数相加的宏函数:
1、不是函数 | #define ADD(int a, int b) return a+b; |
2、分号 | #define ADD(a, b) a+b; |
3、括号控制优先级 | #define ADD(a, b) ((a)+(b)); |
核心点:宏是预处理阶段进行替换 |
为什么加里面的括号:
由此我们引入内联:
内联函数概念:
查看方式:
此时再打开反汇编就可以观察到,函数在此时直接展开