为什么需要在转换构造函数上引用this->?

时间:2018-10-01 04:35:11

标签: c++ class oop this

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

这是我的代码:

头文件:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

简短回答:

this是指向您课程的指针。

*this是您的课程内容。


箭头运算符:x->y等同于(*x).y,只是比较整洁。