由于this
指针是非const成员函数(来自C ++ Primer)中的const pointer
(不是指向const的指针),因此我试图通过将其他一些对象的地址分配给但它不是左值,因此又给出了另一个错误(我不想要)。
如果我尝试将对象分配给取消引用的this
,那么它将只是将一个对象分配给另一个对象。
有什么方法可以测试this
的const pointer
性质
最佳答案
我认为编译器已为您提供了正确的错误消息。根据标准,[class.this]/1
在非静态([class.mfct])成员函数的主体中,关键字this
是prvalue,其值是指向调用该函数的对象的指针。在类X
的成员函数中,此类型为X*
。如果将成员函数声明为const
,则this
的类型为const X*
,
标准没有说this
是const
指针;而是说this
的类型是X*
(或const X*
成员函数中的const
)。如错误消息所述,this
是一个不可修改的prvalue。
从防止修改this
(或获取其地址)的角度来看,将其声明为prvalue就足够了。另一方面,由于可能会使用const
,仅将其声明为const_cast
是不够的。
关于c++ - 测试const指针的性质,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57881828/