在函数中,如何分配this
新值?
问问题
18750 次
6 回答
41
您可以在以下位置分配对象this
点:
*this = XY;
但是您不能分配 的直接值this
:
this = &XY; // Error: Expression is not assignable
于 2012-11-20T15:56:22.610 回答
40
你不能。
9.3.2 this指针[class.this]
1 在非静态 (9.3) 成员函数的主体中,关键字
this
是纯右值表达式,其值是调用该函数的对象的地址。[...](强调和链接我的)
您可以修改对象this
指向,即*this
. 例如:
struct X
{
int x;
void foo()
{
this->x =3;
}
};
该方法修改对象本身,但类似的东西this = new X
是非法的。
于 2012-11-20T15:49:45.520 回答
20
很久以前,在第一个 C++ 标准发布之前,一些编译器实现允许您在构造函数中编写以下代码:
this = malloc(sizeof(MyClass)); // <<== No longer allowed
该技术是控制对象类分配的唯一方法。这种做法已被标准禁止,因为 的重载operator new
已经解决了过去通过分配 to 来解决的问题this
。
于 2012-11-20T16:02:28.483 回答
3
你不能。如果您觉得有必要这样做,也许您应该编写一个将类指针作为第一个参数的静态方法。
于 2012-11-20T15:51:15.113 回答
2
this
您不能为指针赋值。如果您尝试将值分配给this
某些东西,就像this = &a
它会导致非法表达式一样
于 2012-11-20T15:50:25.890 回答
0
你不能。"this" 是一个类的每个成员函数的隐藏参数,它对于 X 类的对象的类型是 X* const。这显然意味着您不能将新值分配给“this”,因为它被定义为 const。但是,您可以修改 this 指向的值。有关详细信息,请参阅http://www.geeksforgeeks.org/this-pointer-in-c/。
于 2015-06-21T04:21:45.643 回答