C++_const

----- const 常量修饰符 ------
a.修饰只读变量或对象
b.节省空间,避免不必要的内存分配 。编译器,不为const分配存储空间,保存在符号表中,成为编译期间变量,不用存储和读取内存,操作效率高
 
为什么定义时同时要初始化?
 
const VS define
   #define 宏是在预编译期间进行替换,const在编译时确定值
   #define 宏没有类型,const修饰的只读变量具有特定的类型
 
例子:
#define D 3
const int C = 5;  //  此时并未将C放入内存中
...
int i = C;   // 为N分类内存,此后不再分配
int I = D;   // 预编译期间 进行宏替换,分配内存
int j = C;   // 没有内存分配 
int J = D;  // 宏替换,分配内存
 

 

  从汇编角度,const定义的只读变量给出了相应的内存地址,而define给出的是立即数,所以const的只读变量在程序运行过程中只有一份拷贝,存在静态区,define的宏常量有多个拷贝
 
相比C,const在C++中的括号在哪
 
修饰指针
const修饰右边的第一个。
const int *p;     // p可变,修饰int,p指向的对象不可变
int const *p;     // p可变,修饰*,地址,则p指向的对象不可变
int *const p;     // p不可变,p指向的对象不可变
const int * const p;   // 

 

 
修饰函数参数和返回值
不希望参数在函数体内意外改变或使用,返回值不可被改变
 
 
posted @ 2016-10-15 03:25  y丫t  阅读(103)  评论(0)    收藏  举报