this 指针的类型分析
在 C 中,'this' 指针是一个特殊的指针,指向当前实例班级。它的类型是根据它使用的上下文确定的。
成员函数中“this”指针的类型
在非常量成员函数中,类型'this' 只是类的名称,后跟 *。例如,在名为 ClassName 的类中,其非常量方法中“this”的类型将为 ClassName *.
Const 成员函数中“this”指针的类型
当在 const 成员函数中使用时,“this”指针变成指向常量对象的指针。它的类型反映了这一点,成为 const ClassName *。这确保了对象不能通过“this”指针修改。
为什么使“this”指针常量?
使“this”指针不变的主要原因const 成员函数中的指针常量是为了强制类的 const 正确性。通过防止通过“this”指针修改对象,可以确保对象保持不变。这有助于维护类数据的完整性并防止意外修改。
解释错误
观察到“this”指针的类型为 ClassName * const this在 Windows 中使用 VC 2008 是不正确的。 “this”指针不是左值,因此不能将 const 限定符应用于星号 (*) 的右侧。非常量成员函数中“this”的正确类型是 ClassName *。
内部实现细节
过去,一些编译器使用了实现细节即使在非常量成员函数中,他们也将“this”指针解释为常量指针。然而,这不符合 C 语言规范,因此已被包括 GCC 在内的大多数编译器放弃。
C 11 Rvalue References 注释
与由于在 C 11 中引入了右值引用,因此可以通过仍然使用上述技巧的实现来检测添加到“this”指针的额外常量。这导致了该技术的弃用,因为它在使用右值引用时可能会导致错误。
以上是C 中'this”指针的正确类型是什么:常量性和实现问题?的详细内容。更多信息请关注PHP中文网其他相关文章!