符号常量:
1.用#define定义的宏常量 进入编译阶段前就被替换成多代表的字面常量,所以本质是字面常量
2.用const定义的常量
C语言中,const定义的是不能让你个修改的量,会给它分配存储空间(外链接)
C++中,基本数据类型的常量,编译器放在符号表中,不分配存储空间,ADT/UDT的const对象则需要分配存储空间。默认内链接
特殊情况:强制声明为extern的符号常量或取符号常量的地址也会分配存储空间以满足用户的需求。
好玩的代码
1 #include<iostream>
2 using namespace std;
3 class A{
4
5 public:
6 A():n(100){}
7 int n;
8 };
9 int main()
10 {
11 const int a=1;
12 cout<<a<<endl;
13 int* p=(int*)&a;//取常量的地址
14 *p=2;// 迂回修改
15 cout<<*p<<endl;//2,修改的是拷贝内容
16 cout<<a<<endl;//1,原始常量没有变化
17