1.限于计算机的硬件资源和性能因素,递归调用的嵌套深度实在有限,所以逼近的速度应该比较现实。
2.函数重载
1)C++编译器能够根据函数参数的类型、数量和排列顺序的差异,来区分同名函数,其技术成为重载。同名函数应该具有相同功能,这样可简化编程和增强程序可读性。
2)重载只匹配参数个数,顺序,类型,不区分返回类型
3)C++按三个步骤匹配调用函数
①寻找一个严格匹配的,如果找到,就调用
②通过相容类型的隐式转换寻求一个匹配,如果找到,就调用
③通过用户定义的转换寻求一个匹配,若能找到唯一的,就调用
点击(此处)折叠或打开
- void print(double);
- void print(int);
- void func(){
- print(1); //匹配void print(int);
- print(1.0); //匹配void print(double);
- print('a'); //匹配void print(int);
- print(3.14159f);//匹配void print(double);
- }
当同时声明void print(float);void print(double)
调用时显示声明print(long(a)),print(double(a));
4)重载技术是用名称压轧技术来改变函数名而实现的。
3.默认参数:在给函数声明中使用默认参数,在调用时,对应的实参可以省略。其效果类似函数重载,但本质上是两回事。
4.效率就是如何在合理的空间占用下获得最有效的运行性能。
5.内敛函数:
1)对函数的内敛声明必须在调用之前
2)适用场合
①函数体较小。
②程序中特别是循环中反复执行该函数。
③程序并不多出出现该函数调用。
6.程序员首选的方法是STL中,选择容器来存储数据,只有在很特别或很专业的情况下,才自己定义或派生容器数据类型。
7.
1)全局变量,一次定义,多出声明。
2)全局常量,在一个文件只能定义一次,但可以在多个文件重复定义。
3)new申请的内存空间开始,一直到人为delet前,空间实体都有效,并且有效的堆空间实体可以被夸函数访问。
8.名空间
1)程序是跨文件的,名空间也是跨文件的;程序描述世界,名空间也对应整个世界。
2)局部名空间默认
点击(此处)折叠或打开
- #include <iostream>
- using std::cout;
- using std::endl;
- int abs(int a){
- return a>0?a:-a;
- }
- int main(){
- int a = abs(-5);
- int b = std::abs(-5);
- cout<<a<<endl<<b<<endl;
- }
9.
1)由于头文件可以嵌套,为了避免有些内容重复定义,最好使用#ifndef…#define…#endif
2)头文件卫视
点击(此处)折叠或打开
- #ifndef DATE
- #define DATE
- Struct Data{
- Int year,month,day;
- }
- #endif