逻辑常数和物理常数

时间:2011-03-16 19:55:39

标签: c++ class

  

可能重复:
  Physical constness of a class

在C ++中,关于一个对象,逻辑常量和物理常量之间的区别是什么?

2 个答案:

答案 0 :(得分:2)

这些不是标准术语,但我认为“物理常量”表示常量对象,“逻辑常量”表示常量引用或指针。

在第一种情况下,对象被声明为常量Object const object;,或者是文字常量,例如1"hello",并且绝不能修改;这样做是不明确的行为。该对象可能被放置在只读存储器中以强制其持久性。

在第二种情况下,指针或引用被声明为引用常量对象Object const * pointer;Object const & reference;,但对象本身不一定是常量。指针或引用不能用于修改对象(除非用const_cast进行了修改),但如果对象本身不是“物理上”常量,则可能通过其他方式改变。

答案 1 :(得分:0)

如果我正确地理解了这些术语,那么差异就是文字(如"asdf"1.0f)之间的区别,是一个“物理”常量,可以在编译期间替换或保存在特殊存储,以及一个逻辑的常量变量(const char*const float)。

你无法区分程序中的那些,绝对不应该尝试:)