Форум программистов, компьютерный форум 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
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
26.05.2013, 18:23     указатель this что именно он делает
VLK, вызывающий объект это переменная класса от которой через точку (оператор доступа) вызывается функция-член. this внутри этой функции - указатель на эту переменную (экземпляр). Что касается разыменования this при возврате, то результат зависит от типа возврата (объявленного в сигнатуре метода). Вы продолжаете его не писать и похоже не видите разницы. Вот тут я понаписывал опять, может разберёте:
//
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
using namespace std;
class music
{
public:
music() {  }
music(int k, int d, int m) { kol = k; dl = d; mb = m;  }
~music() {  }
void show() {cout<<"KOL: "<<kol<<" DL: "<<dl<<" MB: "<<mb<<"\n"; }
music fun_this(music sss)//вернет music 
{
music temp(5,5,5);//этот объект просто будет уничтожен при выходе из функции 
return *this;//это новый объект (копия вызывающего создастся при присвоении), так как возвращается объект типа music
}
music& ref_fun_this()//вернет music& - ссылку ЭТОТ ПРИМЕР САМЫЙ НУЖНЫЙ см. историю про c и d остальное - варианты
{
return *this;//это ссылка на сам вызывающий объект, а не копия так как метод возвращает ссылку
}
music& ref_fun_from_ref(music& isCallingObj)//вернет music& - ссылку 
{
if(&isCallingObj==this) cout<<endl<<"Вызывающий и вызываемый это один объект"<<endl;
else
 cout<<endl<<"Вызывающий и вызываемый это разные объекты"<<endl;
return isCallingObj;//
}
music& ref_fun_from_ptr(music* isCallingObj)//вернет music& - ссылку 
{
if(isCallingObj==this) cout<<endl<<"Вызывающий и вызываемый это один объект"<<endl;
else
 cout<<endl<<"Вызывающий и вызываемый это разные объекты"<<endl;
return *isCallingObj;//
}
//private://это пока не важно
int kol;
int dl;
int mb;
};
int main(){
setlocale (LC_CTYPE, "Russian");
music a(2,2,2);
cout << "A(2,2,2) - ";
a.show();
music b(3,3,3);
cout << "B(3,3,3) - ";
b.show();
cout << endl;
music c = a.fun_this(a);//вернёт копию a то есть с содержит то же, что и a : 2,2,2
a.kol=123;//изменим a
cout << "a(123,2,2) - ";
a.show();
cout << "C(2,2,2) - ";
c.show();cout<<" a изменилась, а c - нет, потому, что с это копия a";
cout << endl;
cout << endl;
music& d = c.ref_fun_this();//вернёт ссылку на c тоесть d и с это один и тот же объект 2,2,2 
c.kol=456;//изменим c
cout << "c(456,2,2) - ";
c.show();
cout << "d(456,2,2)!! - ";
d.show();cout<<" c и d изменились, потому, что d - ссылка на c, то есть то же что и c )";
cout << endl;
music& f = d.ref_fun_from_ref(d);
d.kol=789;//изменим d
cout << "d(789,2,2) - ";
f.show();
cout << "f(789,,2,2) - ";
f.show();cout<<" f и d изменились, потому, что f - ссылка на d, то есть то же что и d )";
cout << endl;
music& g = b.ref_fun_from_ptr( &b );
g.kol=101;//изменим g
cout << "g(101,3,3) - ";
g.show();
cout << "b(101,3,3) - ";
b.show();cout<<" g и b изменились, потому, что g - ссылка на b, то есть то же что и b )";
cout << endl;
cout << endl;
system("pause");
return 0;
}
 
Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru