可能重复:
我什么时候应该明确使用this指针?
我想知道"this"指针的正确用法.
我见过有人创建了一个类构造函数,其中传递的参数传递给名为'data'的传递变量.但是他有一个名为'data'的私有成员变量,因此他只使用了:
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
}
};
Run Code Online (Sandbox Code Playgroud)
您将注意到必须使用this指针才能从模板基类中正确解析继承的非静态数据成员.这是因为它base_class<T>::a是一个依赖名称,在这种情况下依赖于模板参数T,但在没有this指针的情况下使用它时,它被视为非依赖名称,因此不会在依赖基类中查找命名空间.因此,如果没有this指针的特定解引用,您将最终得到编译器错误,例如" a未在此范围内声明"或类似的东西.
| 归档时间: |
|
| 查看次数: |
3632 次 |
| 最近记录: |