C++与C:
C++是C的增强版,C几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持并需要使用。
为什么C++支持重载,C语言不支持?
1.函数重载:在同一作用域类,一组函数的函数名相同,参数列表不同(个数/类型不同),与返回值无关。不仅函数可以重载,
运算符也可以重载。
注意:main函数不能重载,因为程序的入口只有一个。
2.翻译过程一般分为: 预处理—-编译——汇编——链接
预处理:展开头文件,宏替换,去掉注释,条件编译等工作。生成.i文件
编译:语法检查,生成汇编代码。 生成.s文件
汇编:将汇编代码转成机器码 。 生成.o文件
链接:将之前生成的文件链接到一起,生成可执行文件。 生成.out文件
如果有多个.c文件,注意 在链接之前各文件都是独立向下进行的,各文件之间没有交集。所以支持重载问题就出在链接这个阶段上,c语言在链接的时候根据函数名找要调用的函数,而c++而是根据函数名和参数类型来寻找
要调用的函数(函数名修饰规则);
缺省参数
在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。缺省分为全缺省
和半缺省
全缺省:函数的每个参数都给一个默认值
int add(int a=5,b=1)半缺省:只给一部分参数给默认值,注意半缺省只能缺省右参数。
int add(int a,int b=1)
命名空间
名字空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,以关键字
namespace开头给它起一个名字:
namespace name{
int a=0;
}
name::a=10;
命名空间域解决全局命名冲突的问题。