如果this是一个指向类对象的const指针,你怎么能从非const返回类型返回一个const指针?
Class T
{
public:
T* func(){return this;}
};
Run Code Online (Sandbox Code Playgroud)
首先,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 是否?