当在任何允许 this 关键词的语境(非静态成员函数体、成员初始化器列表、默认成员初始化器)中使用非静态数据成员时,它的名字前会自动添加隐含的 this->,产生一个成员访问表达式(如果该成员是虚成员函数,那么产生虚函数调用)。

在类模板中,this 是一个待决表达式,而且显式的 this-> 可以用于强行使另一表达式变为待决的。

在对象的构造期间,如果通过并非直接或间接从构造函数的 this 指针获得的泛左值访问对象或其任何子对象的值,那么如此获得的对象或子对象的值是未指明的。换言之,构造函数中 this 指针不能被别名化:

如果程序能保证对象由 new 分配,那么可以执行 delete this;,然而这会令指向被解分配对象的所有指针失效,包括 this 指针自身:在 delete this; 返回后,这种成员函数不能引用类的成员(因为这牵涉到 this 的隐式解引用),且不可再调用其他成员函数。

例如,这被用于 std::shared_ptr 的控制块的负责减少引用数的成员函数中,在最后一个到被管理对象的引用离开作用域时。

本页面最后修改于2021年11月7日 (星期日) 03:19。

此页面已被浏览过8879次。