由于this指针是非const成员函数(来自C ++ Primer)中的const pointer(不是指向const的指针),因此我试图通过将其他一些对象的地址分配给但它不是左值,因此又给出了另一个错误(我不想要)。

如果我尝试将对象分配给取消引用的this,那么它将只是将一个对象分配给另一个对象。

有什么方法可以测试thisconst pointer性质

最佳答案

我认为编译器已为您提供了正确的错误消息。根据标准,[class.this]/1


  在非静态([class.mfct])成员函数的主体中,关键字this是prvalue,其值是指向调用该函数的对象的指针。在类X的成员函数中,此类型为X*。如果将成员函数声明为const,则this的类型为const X*


标准没有说thisconst指针;而是说this的类型是X*(或const X*成员函数中的const)。如错误消息所述,this是一个不可修改的prvalue。

从防止修改this(或获取其地址)的角度来看,将其声明为prvalue就足够了。另一方面,由于可能会使用const,仅将其声明为const_cast是不够的。

关于c++ - 测试const指针的性质,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57881828/

10-15 03:09
查看更多