1.C++
大家对C++的印象是什么?难!还有呢?还是难!
所以这里首先给大家一点C++学习建议
C++可分为4个层次:
第一层次,C++基础,挑选一本入门书籍,如《C++ Primer》,《C++大学教程》等.
第二层次,正确高效的使用C++.
第三层次,深入了解C++.
第四层次,研究C++.
达到第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。不然你会从入门到放弃……
C++发展史
C几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持并需要使用。
C plus plus(C++),所以在C的基础上又有了很多新的特性。
2.为什么C++支持重载?C语言不支持。
函数重载:在同一作用域,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。
void func(int x,double d)
{}
void func(double x,int d)
{}
注意:main函数不能重载,因为程序的入口只有一个。
解释为什么C++支持重载而C不支持重载,还得知道程序的翻译过程。
程序的翻译过程:预处理-编译-汇编-链接
预处理: 宏替换,删除注释,展开头文件,条件编译。生成.i文件。
编译: 语法检查,生成汇编代码。生成.s文件。
汇编: 将汇编代码转成机器码。生成.o文件。
链接: 将之前生成的文件链接到一起,生成可执行文件。生成.out文件。
因为在链接之前各文件都是独立向下执行的,各文件之间没有交集,所以支持重载问题就出在链接这个阶段,C语言在链接时根据函数名找要调用的函数,而C++是根据函数名和参数类型来寻找要调用的函数.
3.缺省参数
缺省参数:在声明函数时为参数指定一个默认值,在调用该函数的时候如果采用默认值,就无需指定该参数,称为缺省参数。
缺省参数分为全缺省参数和半缺省参数。
全缺省:函数的每个参数都给一个默认值。
半缺省:从右往左,只给一部分默认值。
//全缺省
int Add1(int a = 0,int b = 0){
return a + b;
}
//半缺省
int Add2(int a,int b = 0){
return a + b;
}
注意:半缺省只能从右往左缺省
4.命名空间
命名空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起名字:
namespace name1{
int a = 0;
}
namespace name2{
int a = 1;
}
name1::a = 3;
name2::a = 4;
可以发现:名字空间域解决全局命名冲突问题
还需要了解,标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。