crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> что такое this ?
Litkevich Yuriy
  опции профиля:
сообщение 7.5.2011, 13:26
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(RazrFalcon @ 6.5.2011, 10:28) *
Без понятия, я с этим так и не разобрался.
без этого понятия в Си++ практически не возможно работать.
this - указатель "на самого себя" внутри некого класса. А точнее на экземпляр (объект) этого класса.
Пример, некая функция некого класса:
int SomeClass::SomeFunc(int var)
{
    return var + m_var; // m_var - переменная-член класса
}
Этот код можно записать иначе (строже):
int SomeClass::SomeFunc(int var)
{
    return var + this->m_var; // m_var - переменная-член данного класса
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 18.9.2011, 22:23
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


А в чем принципиальная разница между этими вариантами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 18.9.2011, 23:50
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


В первом варианте - четко "по коду" не ясно, хочешь ты использовать переменную класса, или же это глобальная или "еще какая" переменная.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 19.9.2011, 10:56
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(ufna @ 19.9.2011, 0:50) *
В первом варианте - четко "по коду" не ясно, хочешь ты использовать переменную класса, или же это глобальная или "еще какая" переменная.


Это так, шашечки. Но иногда без this-а не обойтись:
void foo(SomeClass *obj)
{
...
}

int SomeClass::SomeFunc()
{
    foo(this);
}

SomeClass *o1 = new SomeClass();
o2->SomeFunc();

SomeClass *o2 = new SomeClass();
o2->SomeFunc();
Мы передаем в foo() указатель на себя на объект типа SomeClass. Только не путай класс и объект (instance) класса.
Первый раз функция foo() будет вызвана с аргументом равным o1, второй раз с 02.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.12.2024, 19:13