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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.83
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,921
Записей в блоге: 1
#1

оператор this - C++

23.11.2011, 13:57. Просмотров 5233. Ответов 4
Метки нет (Все метки)

Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 13:57     оператор this
Посмотрите здесь:

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

оператор do while - C++
задание следующее: нужно найти произведение n чисел, но используя оператор do while. Я более-менее изучил его основы и элементарные...

Оператор If - C++
Всем доброго времени суток. Такой вопрос, мне нужно задать условие : baza.time >= 30 и в тоже время baza.price < 100000 чтобы...

оператор For - C++
Надо использовать оператор For в данной задаче..... Надо сделать программу каторый выводит имя например:alpamis 10 раз

Оператор if - C++
Почему у меня оператор Else выдает как ошибку(Е2054 Misplaced else)? и в операторе if не нравится как я записал if((s==a)&&(f==p)); ? ...

оператор if - C++
если А = 5 , то пишется if(A == 5) а если А от 5 до 7 включительно, как записать ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
thick_int
Заблокирован
23.11.2011, 14:06     оператор this #2
Его, например, можно использовать в тех случаях, когда функция-член должна возвращать либо сам объект данного класса, для которого эта функция вызвана, либо ссылку или указатель на оный. И это далеко не единственный способ ипользования this.
Разные списочные и древовидные структуры также ипользуют эту штуковину во всю.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,921
Записей в блоге: 1
23.11.2011, 14:12  [ТС]     оператор this #3
Цитата Сообщение от thick_int Посмотреть сообщение
Его, например, можно использовать в тех случаях, когда функция-член должна возвращать либо сам объект данного класса, для которого эта функция вызвана, либо ссылку или указатель на оный. И это далеко не единственный способ ипользования this.
Разные списочные и древовидные структуры также ипользуют эту штуковину во всю.
Хотел спросить. а функции такие как воспроизведение медиа файлов надо самому писать или они есть в WinApi
Сыроежка
Заблокирован
23.11.2011, 14:20     оператор this #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение
this - это не оператор, а указатель и представляет собой адрес объякта, для которого не статическая функция-член была вызвана. Если x - это объект класса T, то указатель this имеет тип T *. Если объект x является константным объектом класса T, то указатель this имеет тип const T *.

Когда вызывается нестатическая функция-член класса, то ей неявно передается этот указатель на объект, который вызвал функцию. Зачем это нужно? Например, чтобы из функции-члена класса в качестве возвращаемого значения вернуть этот объект, который вызвал функцию. Иначе трудно было бы написать оператор присваивания, рузальтатом которого является объект, которому было сделано присваивание.

Расссмотрим простой код.

C++
1
2
3
int x, y, z = 10;
 
x = y = z;
Чтобы эта конструкция работала, нужно чтобы выражение y = z возвращало объект y, которой в свою очередь будет присвоен объекту x.

Другой пример

C++
1
2
3
int x = 0, y =1;
 
++x = y:
Здесь значением выражения ++x должен быть сам объект x, чтобы имел смысл присвоение ему значения переменной y.

Как это реализовать для объектов класса?
Пусть x - это объект класса T. Тогда операция ++x по аналогии с целочисленными объектами должна возвращать сам объект x после его инкремента. Делается это с помощью указателя this

C++
1
2
3
4
5
6
T & T::operator ++()
{
    /* иммитируем инкриментирование объекта */
    /* и возвращаем сам объект из функции */
   return ( *this );
}
Тогда мы можем выполнять для объекта класса аналогичный код, показанный выше

C++
1
2
3
T x, y;
 
++x = y;
так как значением выражения ++x будет сам объект x. Это стало возможным потому, что оператор=функция operator ++ получила адресс объекта в неявном параметре this. который ее вызвал, и смогла вернуть ссылку на этот объект опять-таки благодаря возврату разыменованного указателя this .

Важно также отметить, что когда внутри класса вы объявляете функцию - член класса с квалификатором const, то, фактически, этот квалификатор относится к неявному параметру this

Например,

C++
1
2
3
4
struct A
{
   void f() const;
};
Это эквивалентно тому, как если бы вы явно объявили эту функцию f с одним параметром.

C++
1
2
3
4
struct A
{
   void f( const A *this );
}
Но так как любая нестатическая функция -член класса получают этот параметр, то есть указатель на объект класса, вызвавший функцию, то запись решиди сократить, и сам параметр this передавать неявно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 15:01     оператор this
Еще ссылки по теме:

Оператор for - C++
Всем здравствуйте. Изучаю оператор for, и совершенно не могу понять, как он будет работать в этой программе: Найти сумму целых...

Оператор == - C++
char ch = 255; if(ch==255) cout<<"Hello!"; Почему условие выдаёт false? Понятно что ch в данном случае равно -1 из-за...

Оператор new - C++
Приветствую. Есть такой вопрос. Почему одни программисты используют оператор new, а другие нет? Ведь если создавать объект этими...

оператор - C++
Возврат результата из функции в вызывающую её функцию осуществляется с помощью оператора…

оператор for c++ - C++
вывести все целые числа из диапазона от А до В (А<=B), оканчивающиеся на X или Y условие понятно какое но выводит все числа из диапазона,...

Оператор while - C++
Доброго времени суток всем! Только-только начал изучать плюсы и возникла проблема при выполнении задания. Задание: написать программу...


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

Или воспользуйтесь поиском по форуму:
mc.Duck
Заблокирован
23.11.2011, 15:01     оператор this #5
this - указатель на обьект, который вызвал метод класса...
Yandex
Объявления
23.11.2011, 15:01     оператор this
Ответ Создать тему
Опции темы

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