Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
26.05.2013, 00:06  [ТС]     указатель 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
#include <iostream>
 
class test
{
public:
int v;
};
 
test inc(test* const this_, int inc_value)
{
test rv = *this_;
this_->v += inc_value;
return rv;
}
 
int main()
{
test a;
a.v = 10;
 
test b = inc(&a, 1);
 
std::cout << "a.v = " << a.v << std::endl;
std::cout << "b.v = " << b.v << std::endl;
 
system("pause");
return 0;
}

Строчки 3-7 объявляется класс test, у него одна открытая переменная "v".


в Строчке 18 объявляется объект "a" класса "test", и переменной "v" присваивается значение 10.

в Строчке 21 объявляется еще один объект "b" класса "test", и ему присваивается значение которое рассчитывается в функции строчки 9-14

В строчке 9 объявляется функция "inc" типа "test", с параметрами, 1. параметр это ссылка на объект "a" класса "test", второй целочисленное число.

В строке 11 объявляется объект "rv" класса "test", все его параметры равны параметрам this_, а в свою очередь его параметры равны объекту "a" класса "test", this_ это ссылка на объект "a", Но объект "rv" имеют свой адрес в области памяти, отличный от "a", а "test* const this_" и "a" имеют один адрес в области памяти.

В строке 12 к "v" через указатель прибавляется "inc_value", но эта "v" имеет отношение к "test* const this_" из строчки 9, а не к объекту "rv"

т.е. 12 строчка поменяла значение "a.v" на 11
При это "b.v" остается 10 т.к. он имеет разный адрес в памяти от "a.v" и "test* const this_"

Все правильно?

и еще вопрос насчет строчки 13, на сколько мне известно оператор return возвращает только значение, число или лог. значение, а тут получается объект класса, я может не в полном объеме понимаю

Я представляю так? вернуть можно значение, например:

int x=10;
return x;

а тут, для меня это равнозначно:

return funciya();
или
return int x;

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