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