const变量悖论

时间:2011-01-14 20:44:55

标签: c++ programming-languages const

如果我在c ++上有一些表达式:

const int x = 3;

我可以说x是变量吗?这似乎很奇怪因为x不可变因为我无法改变它,感谢提前任何扩展

被修改 附:感谢所有的答案,我理解根据C ++的定义,我的问题的答案可能是肯定的,你知道其他一些语言,其中我的问题的答案是否定的?

5 个答案:

答案 0 :(得分:5)

是。 x是一个变量,即使你不能(合法地)改变它的值。

实际上,在C ++中,具有名称的对象是“变量”。

答案 1 :(得分:1)

这是哲学的,它无法修改,实际上像GCC这样的编译器将它存储在Text-section中。 所以或者是一个不可修改的变量,或者是一个常数。

答案 2 :(得分:1)

在C ++术语中,术语变量几乎与术语对象同义:任何声明的对象变量。对象是否可更改没有任何区别。因此,在官方术语中,x是一个变量。

答案 3 :(得分:0)

在C ++的ISO语言定义中,此对象称为 const变量,表示只读变量。在概念上和自然语言语义中,它仍然是不变的。

我想这个术语仅用于区分常量对象(例如示例中的x)和文字常量(例如3) ),其中一个是可寻址对象,另一个不是。未使用术语const object,因为对象引用内存中的实例,而变量引用与对象关联的名称或标识符。

答案 4 :(得分:0)

BTW它对函数声明很有用,例如

void ReadStuff(const int a)

这意味着你实际上可以给函数一个非静态变量但是 它将被视为常量(即函数不会改变它)。