命名空间的展开
#include<iostream>
//命名空间的展开
using std::cout;
using std::endl;
int main()
{
cout << "hello c++" << endl;
}
缺省参数
using namespace std;
void Func(int a = 0)
{
cout << a << endl;
}
int main()
{
Func();//10
Func(6);//6
全缺省
void Func1(int a = 10, int b = 20, int c = 30)
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
int main()
{
//Func();//10
//Func(6);//6
Func1();
Func1(1);
Func1(1,2);
Func1(1,2,3);
半缺省必须从右向左连续缺省。调用是必须从左向右填充参数,不能空缺。****函数重载,函数名相同,参数不同(类型|个数|顺序不同加粗样式**)与返回值无关**
**
为什么c语言不支持函数重载???
**
gcc的函数修饰后名字不变。而g++的函数修饰后变成【_Z+函数长度+函数名+类型首字母】。
采用C语言编译器编译后结果
若函数名相同的话,编译会报错,-o链接是会发生冲突。
采用C++编译器编译后结果
查看符号表中的内容
```bash
objdump -S XXX.cc
obj为.o文间,dump将其导出来。->查看汇编代码
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。
预处理:
- 头文件展开
- 宏替换
- 条件编译
- 去注释
g++ -E test.i test.c
编译:
检查语法,生成汇编代码
g++ -s test.s test.i
汇编:
将汇编代码转成二进制的机器码
g++ -c test.o test.s
链接:
将两个目标文件链接到一起