我知道“this”运算符用于访问调用对象的成员函数,但它们也可以正常调用。那么,“this”运算符的用途究竟是什么。
问问题
129 次
5 回答
10
我不认为这是一个糟糕的问题。他不是在问 this 有什么作用,而是在大多数时候暗示 this 时为什么关键字存在。
这是需要此指针的情况
class Test
{
int i;
void Set(int i)
{
this->i = i;
}
};
this 用于在同名的成员变量和函数参数之间进行选择。
当您需要类中对象的地址时,也可以使用它。
void f(Test *p);
class Test
{
int i;
void pass()
{
f(this);
}
};
于 2013-07-31T17:16:14.883 回答
1
在 C++中没有调用运算符this
- 所有非静态成员函数中都存在一个隐式变量。wherethis
是指向当前类实例的指针。
this
也是语言中的关键字(换句话说,保留字,不能this
用作变量或函数的名称)
this
可以用来指代对象。
例如
class A
{
int x;
void some_func()
{
this->x = 42;
}
};
在上述情况下它是多余的,但在某些情况下它是有用的或需要的。
于 2013-07-31T17:13:17.883 回答
1
首先,this
不是运算符(运算符有+
、-
等)。它是一个保留关键字,也是一个表达式。
this
在成员函数中用于引用函数被调用到的对象。你是对的,它不需要引用成员变量或成员函数,但如果你想引用整个对象,它很有用。
于 2013-07-31T17:13:48.937 回答
0
'this' 是指向对象实例的指针
考虑以下场景,其中可以使用它来查看一个好处:
int add(int a, int b){
return a + b;
}
但是,假设您还有一个名为“b”的数据成员。
return a + b
返回参数的总和
return a + this->b
返回参数 a 和数据成员 b 的总和
于 2013-07-31T17:15:52.273 回答
-1
根据 MSDN:
this指针(非运算符)是只能在类、结构或联合类型的非静态成员函数中访问的指针。它指向调用成员函数的对象。静态成员函数没有 this 指针。
你可以在什么时候使用它,比方说你想做这样的任务:
myClass::myClass(int x) {
myGlobalVar = this;
this-> x = x;
}
于 2013-07-31T17:14:14.867 回答