请问下面两句的实质区别,还有为什么作为数组维度会报错。
const int a = 1;
const int& a = 1;
const int a = 1;
int b[a]; // 正确
const int &a = 1;
int b[a]; // 错误:“表达式必须含有常量值”
const int a = 1; 相当于a的值在编译的时候会替换为1
int b[a];
相当于
int b[1];
而const int &a = 1;
a还是变量,只是这个变量不允许修改(编译器保证)
而int b[变量]是否合法这个取决于你的编译器。
对于gcc,这是成立的,对于vc++,这个不允许。