首页 > 代码库 > const 使用方法具体解释
const 使用方法具体解释
const使用方法具体解释
面向对象是C++的重要特性.
可是c++在c的基础上新添加的几点优化也是非常耀眼的
就const直接能够代替c中的#define
下面几点非常重要,学不好后果也也非常严重
const
1.限定符声明变量仅仅能被读
const int i=5;
int j=0;
...
i=j; //非法。导致编译错误
j=i; //合法
2.必须初始化
const int i=5; //合法
const int j; //非法。导致编译错误
3.在还有一连接文件里引用const常量
extern const int i; //合法
extern const int j=10; //非法,常量不能够被再次赋值
4.便于进行类型检查
用const方法能够使编译器对处理内容有很多其它了解。
#define I=10
const long &i=10;
char h=I; //没有错
char h=i; //编译警告。可能因为数的截短带来错误赋值。
5.能够避免不必要的内存分配
#define STRING "abcdefghijklmn\n"
const char string[]="abcdefghijklm\n";
...
printf(STRING); //为STRING分配了第一次内存
printf(string); //为string一次分配了内存,以后不再分配
...
printf(STRING); //为STRING分配了第二次内存
printf(string);
...
因为const定义常量从汇编的角度来看,仅仅是给出了相应的内存地址。
而不是象#define一样给出的是马上数,所以。const定义的常量在
程序执行过程中仅仅有一份拷贝,而#define定义的常量在内存中有
若干个拷贝。
6.能够通过函数对常量进行初始化
int value();
const int i=value();
dapingguo说:假定对ROM编敲代码时,因为目标代码的不可改写,
本语句将会无效,只是能够变通一下:
const int &i=value();
仅仅要令i的地址处于ROM之外。就可以实现:i通过函数初始化,而其
值有不会被改动。
7.是不是const的常量值一定不能够被改动呢?
观察下面一段代码:
const int i=0;
int *p=(int*)&i;
p=100;
通过强制类型转换。将地址赋给变量。再作改动即能够改变const常量值。
8.请分清数值常量和指针常量,下面声明颇为玩味:
注意两点:
1. 口诀:【左值。右向】。const在*左边。限定指针指向的内容为常量。const在*右边,限定指针本身的值为常量
2. const 和相邻的类型keyword的前后顺序能够互换:const int 和int const全然一样。可是*不是类型keyword。
int ii=0;
const int i=0; //i是常量,i的值不会被改动
const int *p1i=&i; //指针p1i所指内容是常量。能够不初始化
面向对象是C++的重要特性.
可是c++在c的基础上新添加的几点优化也是非常耀眼的
就const直接能够代替c中的#define
下面几点非常重要,学不好后果也也非常严重
const
1.
2.
3.
4.
5.
6.
7.
8.
注意两点: