命名空间+缺省参数+const总结+引用总结+内联函数+auto关键字 C++初阶( 七 )


  #define PI 3.14159 //常量宏    const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......    double i=Pi; //此时为Pi分配内存,以后不再分配!    double I=PI; //编译期间进行宏替换,分配内存    double j=Pi; //没有内存分配    double J=PI; //再进行宏替换,又一次分配内存!const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而 #define定义的常量在内存中有若干个拷贝 。
const与static的区别static
1、static局部变量 将一个变量声明为函数的局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中
2、static 全局变量 表示一个变量在当前文件的全局内可访问
3、static 函数 表示一个函数只能在当前文件中被访问
4、static 类成员变量 表示这个成员为全类所共有
5、static 类成员函数 表示这个函数为全类所共有,而且只能访问静态成员变量
static关键字的作用
(1)函数体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值(2)在模块内的static全局变量和函数可以被模块内的函数访问,但不能被模块外其它函数访问(3)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝(4)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量
const关键字的作用
(1)阻止一个变量被改变(2)声明常量指针和指针常量(3)const修饰形参,表明它是一个输入参数,在函数内部不能改变其值(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为”左值”
引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间 。也就好比我们给同学取了一个外号一样 。用法: 类型&引用变量名(对象名)= 引用实体;
int main(){ int a = 10; int& ra = a;// ra是a的引用 cout << a << endl; cout << ra << endl; system("pause"); return EXIT_SUCESS;}特性及注意事项

  • 引用在定义的时候必须初始化
  • 一个变量可有多个引用
  • 引用一个引用一个实体,无法再引用其他实体
Type& ref = val;
注意事项:
  • &在此不是取地址运算符,而是起到一个标识的作用
  • 类型标识符指的是目标变量的类型
  • 引用初始化之后不能改变
  • 不能有NULL引用,必须确保引用是和一块合法的存储单元关联
int a = 10;int b = 20;//int& ra;//引用必须初始化int& ra = a;int& rra = a;//int& ra = b;//引用一旦初始化,不能改变它的指向//int& raaa = NULL;//NULL本身就是不合法的,不能绑定不合法的空间数组的引用int arr[] = {1, 2, 3, 4, 5};//三种方式//1.定义数组类型typedef int(MY_ARR)[5];MY_ARR &arref = arr;//建立引用,int &b = a//2.直接定义引用int(&arref2)[5] = arr;//3.建立引用数组类型typedef int(&MY_ARR3)[5];MY_ARR3 arref3 = arr;

经验总结扩展阅读