#cpp
Насколько я понял, когда читал про this, что указатель необходим по большей части, когда мы используем несколько объектов одного и того же класса. Однако встает вопрос, нужно ли в конструкторе по умолчанию или с параметрами присваивать значение через указатель (ниже код примера class A{ public: A(int in); private: int tmp; }; A::A(int in){ this->tmp=in; // или же tmp=in; }
Ответы
Ответ 1
Нет, не нужно. Вернее - не обязательно. Это было бы нужно, если бы параметр назывался так же как член класса: class A{ public: A(int tmp); private: int tmp; } A::A(int tmp){ this->tmp = tmp; }Ответ 2
Это больше вопрос конвенции кода. this нужно использовать, если имя скрывает другой параметр. Ну или при работе с шаблонами: templatestruct A { int i; }; template struct B : A { int foo() { return this->i; } }; int main() { B b; b.foo(); } Без this-> не скомпилится, т.к. нужно сообщить явно компилятору, что используется i из A . Ответ 3
Помимо уже сказанного в других ответах, наличие this-> сразу говорит читателю кода, что речь именно о члене класса, а не о какой-то другой глобальной/локальной переменной. Подобную проблему, правда лучше решать соглашениями по коду, например, начинать все имена членов с префикса m или добавлять суффикс в виде подчеркивания _. Но и это бывает не нужно, если работать исключительно в современных IDE с достаточным уровнем анализа кода — члены класса будут иметь отдельное от других сущностей выделение цветом/стилем шрифта.
Комментариев нет:
Отправить комментарий