Насколько я понял, когда читал про 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 с достаточным уровнем анализа кода — члены класса будут иметь отдельное от других сущностей выделение цветом/стилем шрифта.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
пытаюсь попробовать данный пример https://githubcom/jordanbonilla/Read_GPU_Temperature_CUDA/blob/master/read_temps
У меня есть класс, в конструктор которого я хочу передать параметры в виде enum
Если у меня есть указатель на строку в середине которой содержится числоЯ могу перевести в число примерно так: