有人能告诉我为什么 reinterpret_cast 不应该工作吗?
AFAICS,reinterpret_cast
应该可以正常工作,但是之后的分配应该会导致错误。
这是因为 aconst GOK_UINT8*
是指向对象的非const
指针const
GOK_UINT8
,而 aconst pGOK_UINT8
是const
指向非const
对象的指针。
前者保护引用的对象,后者保护引用对象的指针。如果允许分配,则可以更改const GOK_UINT8*
要防止更改的对象。
请注意,typedef
ed 指针的行为很奇怪。这是因为const
(C 和)C++ 中奇怪的声明语法:Aconst
保护它左边的东西,除非没有任何东西,然后它保护它右边的东西。因此 inT const
和 in 中T const*
,类型的对象T
是受保护的,而在T* const
指向类型对象的指针中T
是受保护的。如果你有
typedef T* TPtr;
然后TPtr const
再次使指针const
。也是如此const TPtr
。typedef
ed 指针要么指向对象,要么指向const
非const
对象,您无法更改它。您不能将 aconst
塞入附近TPtr
并期望它保护指针所指的对象。
(顺便说一句,这就是 STL 类必须同时定义 aniterator
和 a 的原因const_iterator
。)