首页 > 后端开发 > C++ > 正文

C 中'this”指针的正确类型是什么:常量性和实现问题?

DDD
发布: 2024-11-11 15:26:03
原创
736 人浏览过

What is the Correct Type of the 'this' Pointer in C  : A Question of Constness and Implementation?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板