C++ 从入门到放弃 (Day-01)
2018-10-11 本文已影响122人
麦兜兜买兜兜
◼ C++的后缀是.cpp (c plus plus 简称)
◼ C++ 入门是main函数
◼ C++不允许出现两个main函数 ,Java是可以的
◼ C++完全兼容C语言
◼ C++中常使用cin、cout进行控制台的输入、输出
![](https://img.haomeiwen.com/i694108/9776ad4f96984fbf.png)
◼cin用的右移运算符>>,cout用的是左移运算符<<
◼ endl是换行的意思
函数重载(Overload)
◼规则
函数名相同 参数个数不同、参数类型不同、参数顺序不同
◼注意
返回值类型与函数重载无关 调用函数时,实参的隐式类型转换可能会产生二义性
◼本质
采用了name mangling或者叫name decoration技术
✓ C++编译器默认会对符号名(变量名、函数名等)进行改编、修饰,有些地方翻译为“命名倾轧” ✓ 重载时会生成多个不同的函数名,不同编译器(MSVC、g++)有不同的生成规则
✓ 通过IDA打开【VS_Release_禁止优化】可以看到
extern “C”
◼被extern "C"修饰的代码会按照C语言的方式去编译
![](https://img.haomeiwen.com/i694108/f93bd0c4210d807b.png)
◼ 由于C、C++编译规则的不同,在C、C++混合开发时,可能会经常出现以下操作 C++在调用C语言API时,需要使用extern "C"修饰C语言的函数声明
![](https://img.haomeiwen.com/i694108/db321119aacf126a.png)
◼有时也会在编写C语言代码中直接使用extern “C” ,这样就可以直接被C++调用
![](https://img.haomeiwen.com/i694108/898c85c154fa610a.png)
默认参数
◼ C++允许函数设置默认参数,在调用时可以根据情况省略实参。规则如下: 默认参数只能按照右到左的顺序 如果函数同时有声明、实现,默认参数只能放在函数声明中 默认参数的值可以是常量、全局符号(全局变量、函数名)
![](https://img.haomeiwen.com/i694108/d5fb3443ab6568e4.png)
◼ 函数重载、默认参数可能会产生冲突、二义性(建议优先选择使用默认参数)
![](https://img.haomeiwen.com/i694108/9ac217840ffe48c1.png)