返回const'the'指针

use*_*241 8 c++

如果this是一个指向类对象的const指针,你怎么能从非const返回类型返回一个const指针?

Class T
{
 public:
   T* func(){return this;}
};
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 9

首先,this它不是"常量指针".你在哪里得到那个奇怪的想法?指针this有标量类型而不是左值,这意味着它不可能是"常量"或"非常量".指针this是一个右值,它是不可修改的.

其次,无论涉及的指针是否为const,您问题中的代码都是有效的.例如,以下代码完全相同的原因是有效的

int *const p = 0; /* a const pointer */

int *foo() { 
  return p; /* OK, no error here */
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下返回的是原始指针值的完全独立的副本.无论是否p为const 都无关紧要- 制作const值的副本不会以任何方式违反其const.

这正是您的代码示例中所做的 - 您将返回this值的副本.为什么你甚至不关心thisconst 是否?