Почему я должен ссылаться на this-> в конструкторе преобразования? - PullRequest
0 голосов
/ 01 октября 2018

Я все еще изучаю основы ООП в C ++, и возник вопрос при создании метода оператора с помощью конструктора преобразования.

Вот мой код:

Заголовокфайл:

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 голосов
/ 01 октября 2018

Краткий ответ:

this - указатель на ваш класс.

*this - это содержание вашего класса.


Оператор стрелки: x->y эквивалентно (*x).y, просто более аккуратно.

0 голосов
/ 01 октября 2018

В конкретном примере, который вы показали здесь, вам на самом деле не нужно использовать префикс this->.Есть только несколько случаев, когда вам нужно добавить к элементам данных префикс this->, например

  • , если вы хотите ссылаться на элемент данных с тем же именем, что и у локальной переменной или параметра, к элементуили
  • , если вы используете шаблоны и наследование вместе и вам нужно что-то искать в базовом классе.

Так как пример, который вы имеете, не попадает в эти случаи, как вы заметили в своем собственном исследовании, префикс this-> не является обязательным.

...