如何在C++中为指针'this'赋值

How can you assign a value to the pointer 'this' in C++

本文关键字:this 赋值 指针 C++      更新时间:2023-10-16

在函数中,如何为this赋值?

您可以在以下位置为对象分配this点:

*this = XY;

但是您不能分配 this 的直接值:

this = &XY;   // Error: Expression is not assignable
你不能

9.3.2 这个指针 [class.this]

1 在非静态 (9.3) 成员函数的主体中,关键字 this 是一个 prvalue 表达式,其值 是为其调用函数的对象的地址。[...](强调和链接我的)

您可以修改this指向的对象,即*this 。例如:

struct X
{
   int x;
   void foo()
   {
     this->x =3;
   }
};

该方法修改对象本身,但类似this = new X的东西是非法的。

很久以前,在第一个C++标准发布之前,一些编译器实现允许您在构造函数中编写以下代码:

this = malloc(sizeof(MyClass)); // <<== No longer allowed

该技术是控制对象类分配的唯一方法。这种做法已被标准所禁止,因为operator new的过载解决了过去通过分配给this来解决的问题。

你不能。如果你觉得有必要这样做,也许你应该编写一个静态方法,将类指针作为它的第一个参数。

不能为指针赋值this。如果您尝试将值分配给this类似于this = &a将导致非法表达式

你不能。"this"是类的每个成员函数的隐藏参数,其对类 X 对象的类型是 X* const。这显然意味着您不能将新的 vale 分配给 "this",因为它被定义为常量。但是,您可以修改此指向的值。有关更多详细信息,请参阅 http://www.geeksforgeeks.org/this-pointer-in-c/。