Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Что означает this в классах? - C++

16.04.2013, 11:32. Просмотров 570. Ответов 8
Метки нет (Все метки)

Что означает this в классах?

Например:
C++
void ostream::put(char *p)
{
    while(*p) this->put(*p++);
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 11:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает this в классах? (C++):

Поясните пожалуйста что означает двоеточие и то что идет после него - C++
В 4 строчке после параметра в скобочках нету ";" или же тела функции, что не сходится с моим шаблоном в голове. Поясните пожалуйста что...

скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? - C++
скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? //анализируем все клетки доски for(int i = 0; i < 8;...

Что означает запись в скобках и что возвращает return - C++
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код circleArea(float theRadius) //(1) ...

Что такое #, include, что это означает - C++
______

Что означает %1? - C++
Здравствуйте, вопрос собственно в заголовке, при выводе информации на экран порой используют запись вида "text %1.\n" \n - это как я...

что означает - C++
Что означает такая инструкция? char str;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
16.04.2013, 11:35 #2
указатель на самого себя (переводчик в помощь)
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
16.04.2013, 11:44  [ТС] #3
Цитата Сообщение от oxotnik Посмотреть сообщение
указатель на самого себя (переводчик в помощь)
Рекурсия?
oxotnik
16.04.2013, 11:46
  #4

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Рекурсия?
И тут я впал в ступор....

TheDarkMax2
15 / 15 / 2
Регистрация: 23.09.2011
Сообщений: 165
16.04.2013, 11:50 #5
Цитата Сообщение от programina Посмотреть сообщение
Рекурсия?
Просто написав this Вы указываете, что это компонент (функция) этого же класса, а не какая-то другая одноименная.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.04.2013, 12:16 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от programina Посмотреть сообщение
Рекурсия?
Нет.
C++
1
2
3
4
5
6
7
8
class A
{
 int x;
 void Set(int x)
 {
  this->x=x; // this->x поле x, являющееся членом самого класса, просто x - параметр x метода Set
 }
};
. Рекурсия - совсем другое. Рекурсия - это вложение в данное подобного и однотипного ему данного (поддерева в дерево), или вызов подпрограммой себя, а this позволяет функциям-членам класса обращаться к остальным его членам и при этом не зависеть от их перекрытия параметрами и локальными переменными.
C++
1
this->
подобно
C++
1
::
без идентификатора пространства имён, только вместо глобальной области видимости отправляет в непосредственного владельца текущего экземпляра текущего метода. Не на самый верх поднимает, а ровно на один уровень и только один раз.

Добавлено через 2 минуты
Цитата Сообщение от programina Посмотреть сообщение
C++
1
2
3
4
void ostream::put(char *p)
{
* * while(*p) this->put(*p++);
}
в данном случае имеет место рекурсия, но о ней говорит не this, а put.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
16.04.2013, 12:21  [ТС] #7
taras atavin, спасибо
Croessmah
Модератор
Эксперт CЭксперт С++
13155 / 7418 / 831
Регистрация: 27.09.2012
Сообщений: 18,257
Записей в блоге: 3
Завершенные тесты: 1
16.04.2013, 21:16 #8
Цитата Сообщение от programina Посмотреть сообщение
Что означает this в классах?
Указатель на экземпляр класса. Передается в функции-члены класса неявно как параметр.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 23:38 #9
Еще примерчик:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
class a
{
    int i;
public:
    a(): i(10) {}
        // аналогичный результат a(i) вместо *this только без создания 
        // временного объекта (требует конструктор копирования)
    a operator ++() {++i; return *this;} 
    void show(){ std::cout<<i;}
};
 
int main()
{
   a obj, obj1;
   obj1 = ++obj; //
   obj1.show();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 23:38
Привет! Вот еще темы с ответами:

Что означает |= ? - C++
вопрос в теме

Что означает %d - C++
#include &lt;stdio.h&gt; int main() { FILE *f; char Name = &quot;C:\\Users\\FX-8350\\Desktop\\text.docx&quot;; int Year = 884; f =...

Что означает (//) и (#)? - C++
Что означает? Для чего нужны? Двойной символ «прямой слэш» (//) Одиночный символ «решетка» (#) С помощью каких команд можно...

Что означает ? - C++
Вот функция добавления нового елемента в начало Plist pt; pt = new list; pt-&gt;data = data; pt-&gt;next = sfirst; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.04.2013, 23:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru