什么是const
C++ 中的“顶级”限定符是什么意思?
那么其他级别是什么?
例如:
int const *i;
int *const i;
int const *const i;
顶级 const 限定符影响对象本身。其他的都只是
与指针和参考文献相关。他们不制造物体
const,并且仅防止使用指针或通过路径进行修改
参考。因此:
char x;
char const* p = &x;
这不是顶级常量,并且没有一个对象是不可变的。
表达方式*p
不能用来修改x
,但还有其他表达方式
可;x
不是 const。对于这个问题
*const_cast<char*>( p ) = 't'
是合法且明确定义的。
But
char const x = 't';
char const* p = &x;
这次,有一个顶级常量x
, so x
是不可变的。不
表达式可以改变它(即使const_cast
用来)。这
编译器可能会放x
在只读存储器中,并且可以假设
的价值x
无论其他代码会做什么,都不会改变。
给指针顶级const
,你会写:
char x = 't';
char *const p = &x;
在这种情况下,p
将指向x
永远;任何改变这一点的尝试
是未定义的行为(编译器可能会将p
在只读存储器中,
或者假设*p
指的是x
,无论任何其他代码)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)