1.函数模板
#include <iostream>
using namespace std;
template<class T,class T2>
T mymax(T t1,T2 t2)
{
return t1>t2?t1:t2;
}
void main()
{
cout<<mymax(200,400.6)<<endl;
}
2.变量的存储期
变量有两种存储期,一种的静态存储期,一种的动态存储器
静态存储期:
程序运行期间系统对程序进行分配固定的空间,
动态存储器:
程序运行期间系统对程序动态分配空间和释放
![](http://see.xidian.edu.cn/cpp/uploads/allimg/140510/1-140510100044591.png)
上图为,提供用户使用的存储空间
静态存取区存放:全局变量 静态变量
动态存储区存放:局部变量 形参 返回值的临时变量
变量的存储方法分为静态存储和动态存储两大类。具体包含4种:
自动的(auto)
、
静态的(static)
、
寄存器的(register)
和
外部的(extern)
。根据变量的存储类别,可以知道变量的作用域和存储期
2.1 自动变量(auto)
用auto修饰的变量存储在动态存储区中,
auto int i=10;
auto只能修饰方法或代码块中,不能修饰全局变量
2.2静态变量(static)
这个和其他语言一样2.3寄存器变量(register)
声明和用法和auto这些一样,它也是动态存储区中的,也不能修饰全局变量。。
唯一的区别是,普通的变量都是存放在内存的,当程序需要处理变量的数据时,cpu会从内存中取出数据,然后进行计算,最后在把计算结果存放到内存
而寄存器变量是存储在CPU的寄存器中,不必从内存中存取,提高了效率。。不过现在的系统,都做过优化,会自动把使用很频繁的变量存放到寄存器来提高效率。所以这个我们不经常用,操作系统已经做过优化了
2.4外部变量(extern)
在一个文件中使用外部变量:
#include <iostream>
using namespace std;
template<class T>
T mymax(T t1,T t2)
{
return t1>t2?t1:t2;
}
void main()
{
extern int a,b;
cout<<mymax(a,b)<<endl;
}
int a=200,b=400;
这里a和b的作用域在main函数中不够,所以声明为外部变量extern才能使用
在多个文件中使用外部变量:
假设,一个程序有多个文件,但是多个文件中可能会同时用到同一个全局变量的值,那么就需要使用外部变量了,不过有了类对象后,好像这个也不常用,这是C语言面向过程化的时候才常用的
filel.cpp
extern int a,b;
int main()
{
cout<<a<<","<<b<<end!;
return 0;
}
file2.cpp
int as3,b=4;
3.C++预处理命令
C++预处理命令包括三种:
文件包含、宏定义、条件编译
3.1宏定义
#define PI 3.1415932
还可以这样:
#define SAFE_DELETE(p) if(p){delete (p);p=0;}
3.2文件包含
#include "file2.cpp"
3.3条件编译
#include <iostream>
using namespace std;
#define RUN //在调试程序时使之成为注释行
int main( )
{
int x=1, y=2, z=3;
#ifndef RUN //本行为条件编译命令
cout<<"x="<<x<<", y="<<y<<", z="<<z<<"\n";
#else
cout<<"RUN 已定义"<<endl;
#endif
cout<<"x*y*z="<<x*y*z<<endl;
}
RUN 定义过就执行else后的语句,没定义就执行else前面的cout