首页 > 解决方案 > 为什么我需要在转换构造函数上引用 this->?

问题描述

我还在学习 C++ 中 OOP 的基础知识,在使用转换构造函数创建运算符方法时出现了一个问题。

这是我的代码:

头文件:

class Integer {
private:
    int num;
public:
    Integer();
    Integer(int);//Convert constructor
    ~Integer();
    operator int();
    int getNum();
};

源文件:

Integer::operator int() {
   return this->num; //No idea why I need to specify this-> here.
}

main方法:

Integer a(50); 
a = 100;       

int b = (int)a; 
cout << b << endl;

所以我的问题是,为什么我需要使用this->方法operator int()?我没有传递任何冲突的参数,所以它不应该是编译器的问题。我也没有对其进行过测试,并且效果很好。但是在我的教科书中,我明确指出我应该添加this->num.

有任何想法吗?

标签: c++classoopthis

解决方案


在您在这里展示的特定示例中,您实际上不需要使用this->前缀。只有少数情况需要在数据成员前面加上this->,例如

  • 如果要引用与成员函数的局部变量或参数同名的数据成员,或者
  • 如果您同时使用模板和继承,并且需要在基类中查找某些内容。

由于您的示例不属于这些情况,正如您在自己的探索中指出的那样,this->前缀是完全可选的。


推荐阅读