Possible Duplicate:
When should I make explicit use of the this
pointer?
我想知道“this”指针的正确用法。
我看到有人创建了一个类构造函数,其中传递的参数变量名为“data”。
然而,他已经有一个名为“data”的私有(private)成员变量,因此他只是使用:
this->data = data;
简单地使用就可以了
data = data_in
(如果参数名为 data_in),无需调用“this”指针和引用成员类型。
现在我想知道,这是正确的用法吗?使用 this->member
来降低命名的复杂性?我的意思是它有效,我看到它实现了预期的目的,但我想知道如果这是常见的做法,你们中一些更有经验的 C++ 男孩和女孩是否可以说一两句话?
此外,出于好奇,我对代码进行了检测,只是为了看看幕后发生了什么,似乎“this”指针无论如何都会被调用。我想这就是类对象引用的方式。
在大多数情况下,特别是取消引用 this
访问类实例的非静态数据成员的指针是不必要的,但它可以帮助解决命名困惑,尤其是当类的数据成员在代码模块的单独头文件中定义时。但是,有必要使用 this
指针,如果你正在访问一个非静态数据成员,它是一个模板类的基类的成员。换句话说,在这样的情况下:
template<typename T>
class base_class
{
protected:
int a;
};
template<typename T>
class derived_class : public base_class<T>
{
void function()
{
a = 5; //this won't work
this->a = 5; //this will work
}
};
您会注意到您必须使用 this
指针,以便正确解析从模板基类继承的非静态数据成员。这是因为 base_class<T>::a
是依赖名称,在本例中依赖于模板参数 T
, 但在没有 this
的情况下使用时指针,它被视为非依赖名称,因此不会在依赖基类命名空间中查找。因此没有对 this
的特定取消引用指针,您最终会遇到类似“a
未在此范围内声明”或类似内容的编译器错误。