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

标签 c++ class oop 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.
}

主要方法:

Integer a(50); 
a = 100;       

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

所以我的问题是,为什么我需要在 operator int() 方法上使用 this->?我没有传递任何冲突的参数,所以这对编译器来说应该不是问题。我也没有测试它,它工作正常。但是在我遵循的教科书中明确指出我应该添加 this->num

有什么想法吗?

最佳答案

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

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

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

关于c++ - 为什么我需要在转换构造函数上引用 this->?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52584595/

相关文章:

c++ - 英特尔 Pin 主线程

c++ - 在 C++ 中创建类时,我的标准库头文件放在哪里?

python - 类型错误 : generatecode() takes 0 positional arguments but 1 was given

c# - 类扩展 - 最佳实践/最佳解决方案

c++ - 如何检查 _bstr_t 是否包含(类似于 str.find)字符串

c++ - 通过网络发送对象或保存到硬盘

c++ - 什么是 C++ 中未评估的上下文?

c# - 无数据类型的开销是多少?

javascript - 使用 Object.create() 的 Angular 服务继承

oop - 说明类层次结构的图表称为什么?