在C ++中,关于一个对象,逻辑常量和物理常量之间的区别是什么?
答案 0 :(得分:2)
这些不是标准术语,但我认为“物理常量”表示常量对象,“逻辑常量”表示常量引用或指针。
在第一种情况下,对象被声明为常量Object const object;
,或者是文字常量,例如1
或"hello"
,并且绝不能修改;这样做是不明确的行为。该对象可能被放置在只读存储器中以强制其持久性。
在第二种情况下,指针或引用被声明为引用常量对象Object const * pointer;
或Object const & reference;
,但对象本身不一定是常量。指针或引用不能用于修改对象(除非用const_cast
进行了修改),但如果对象本身不是“物理上”常量,则可能通过其他方式改变。
答案 1 :(得分:0)
如果我正确地理解了这些术语,那么差异就是文字(如"asdf"
或1.0f
)之间的区别,是一个“物理”常量,可以在编译期间替换或保存在特殊存储,以及一个逻辑的常量变量(const char*
或const float
)。
你无法区分程序中的那些,绝对不应该尝试:)