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

указатель this что именно он делает - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана матрица 7х7, поменять местами элементы, симметрично относительно побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread878047.html
#include <iostream> #include <conio.h> using namespace std; int main() { setlocale(LC_ALL, "russian"); int a;
C++ УКАЗАТЕЛИ. Написать функцию, к-рая вычисляет сумму и произведение первых N чётных чисел Написать функцию, к-рая вычисляет сумму и произведение первых N чётных чисел. ИСПОЛЬЗУЯ УКАЗАТЕЛИ!!!!!!! пОЖАЛУЙСТА. СРОЧНО НАДО! Добавлено через 7 минут помогите пожалуйстааа!!! Добавлено через 5 минут #include "stdafx.h" http://www.cyberforum.ru/cpp-beginners/thread878038.html
Написать программу, которая вычисляет среднее арифметическое всех элементов дерева Т C++
...
C++ Определить кол-во элементов массива, которые больше среднеарифметического значения всех элементов массива
Сделать программу, к-рая случайно заполняет массив А (n<30) целыми значениями. Определить кол-во элементов массива, которые больше среднеарифметического значения всех элементов массива.
C++ Как в программе подключить справку? http://www.cyberforum.ru/cpp-beginners/thread877990.html
Есть файл *.chm, подключаю его через project -> options и прописываю ShellExecute(Handle,L"open",L"Справка.chm",NULL,NULL,SW_RESTORE); НО ошибка "cannot convert 'wchar_t*'to'const char*'" Может ещё есть способ?
C++ Массивы-Указатели. Определить кол-во и суму элементов, которые попадают в диапазон А,В Сделать программу, к-рая случайно заполняет массив А (n<30) целыми значениями. Определить кол-во и суму элементов, которые попадают в диапазон А,В. Массив и результат вывести в файл ШАБЛОН ВОТ ТАКОЙ::: #include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
25.05.2013, 18:15
VLK, перегрузка оператора инкремента - не самый удачный пример для понимания, что такое this.
this это указатель на экземпляр класса (переменную типа определяемого классом) для которого вызывается функция класса (не дружественный и не статический метод определённый в классе).
Что касается оператора ++, то у Вас не определён тип возврата. Для префиксного:
C++
1
2
3
4
ClassName& operator++(){//возвращается ссылка
fieldToInk++;
return *this;//возвращается ссылка на вызывающий экземпляр (на себя) и никакой копии не нужно
}
хотя работать будет и так:
C++
1
2
3
ClassName operator++(){//возврат не ссылка (как говорят люди опытные)))
fieldToInk++;
return *this;//возвращается даже не просто объект типа, содержащий  значение которое будет присвоено вызвавшему экземпляру, а при разименовании получается всё равно ссылка на себя, то есть налицо лишняя операция присвоения *this=*this. И ананимная копия для этого создаётся. То есть первый вариант правильнее.
А вот для постфиксного оператора тип возврата, - только тип класса:
C++
1
2
3
4
5
ClassName operator++(int){
ClassName noInkObjToReturn(*this);//сохранили в объекте состояние до инкремента
fieldToInk++;//инкрементировали в вызывающем(this)
return noInkObjToReturn;//возвращается ссылка на объект типа
}
т.к. для постфиксного нужно увеличить после использования в месте инкрементирования.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru