Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,560
1

Почему при передаче по ссылке возвращается *this, а не this?

11.04.2017, 22:09. Показов 686. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Изучаю перегрузку операции присваивания с указателем *this (ниже). Возврат идёт по ссылке на объект, то есть возвращается адрес объекта
(тут я, может, и не прав, но пока так трактую возвращение и передачу по ссылке).
Но почему тогда пишется return *this, а не return this? По сути указатель разыменовывается, и передаётся уже не адрес, а сам объект. Зачем тогда писать alpha&?
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
#include <iostream>
using namespace std;
 
class alpha
{
private:
int data;
public:
alpha() 
{ }
alpha(int d)
{ data = d; }
void display()
{ cout << data; }
alpha& operator=(alpha& a) 
{
data = a.data; 
cout << "\nЗапущен оператор присваивания";
return *this; // вернуть копию this alpha
}
};
int main()
{
alpha a1(37);
alpha a2, a3;
a3 = a2 = a1; 
cout << "\na2 ="; a2.display(); 
cout << "\na3 ="; a3.display(); 
cout << endl;
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2017, 22:09
Ответы с готовыми решениями:

Почему выдает ошибку при передаче по ссылке параметров?
#include &lt;iostream&gt; /* run this program using the console pauser or add your own getch,...

Использовать структуру при передаче функции параметров по ссылке
Пример из Шилдта: #include &lt;iostream&gt; using namespace std; struct mystruct { int a; int...

Изменяется объект при передаче по ссылке
В общем сразу к делу, проблема заключается вот в чем: Polish p = new Polish(); List&lt;string&gt;...

Аллокация памяти при передаче string в функцию по константной ссылке
Поясните пожалуйста данный пример: // C++11 #include &lt;string&gt; void get_vendor_from_id(const...

2
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.04.2017, 22:43 2
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Возврат идёт по ссылке на объект, то есть возвращается адрес объекта
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
тут я ... не прав
Ссылка на объект - это сам объект, а не его адрес. Отсюда и:
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
пишется return *this, а не return this
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
передаётся уже не адрес, а сам объект
1
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
11.04.2017, 22:53 3
Не помешает: Правило 10: Операторы присваивания должны возвращать ссылку на *this
0
11.04.2017, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2017, 22:53
Помогаю со студенческими работами здесь

Передача по ссылке, или изменяется ли класс при его передаче?
Допустим есть класс public class LastHero { private static LastHero _instance; private...

Вызов size контейнера vector при его передаче в функцию по ссылке
Как по-правильному вызвать size контейнера vector, если он передаётся в функцию по ссылке? Можно,...

Получение значений функцией (что происходит при передаче аргумента по значению/ссылке)
Разъясните, пожалуйста, пояснение в скобках

При передачи указателя на обьект ошибка,а при передаче ссылки на указатель нет. Почему?
Hi All! class SomeObj { public: int x; }


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru