170 похожих чатов

Скажите, а вот здесь возвращается ссылка или значение this? в

возвращаемом значении фукнции ссылка, ноя не понимаю почему возвращается dereferenced указатель
const Stock & Stock::topval(const Stock & s) const
{
if (s.total_val > total_val)
return s; // here returning the reference it is OK
else
return *this; // here we are returning de-referenced pointer which should be the value, not the reference
}

50 ответов

5 просмотров

У тебя что тип возврата функции ? Вот то и возвращается

Потому что когда дереференсится указатель - получается ссылка

ты же можешь написать Stock s = *this или const Stock &s = *this;

С чего это он должен быть value, not reference ?

Nastya-Medveda Автор вопроса
Kirill 🚜
Потому что когда дереференсится указатель - получа...

когда дереференсится указатель он получает значение в памяти отадреса памяти указателя и заканчивая сдвигом в памяти согласно его типа.

Nastya Medveda
когда дереференсится указатель он получает значени...

Когда мы дереференсим указатель - мы получаем объект, который расположен по адресу, на который указывал указатель

Kirill 🚜
Когда мы дереференсим указатель - мы получаем объе...

надо было так сразу же написать, а не про ссылку

Nastya Medveda
когда дереференсится указатель он получает значени...

ты получаешь то значение, которое указываешь слева от переменной, вот так об этом думай

Nastya-Medveda Автор вопроса
Kirill 🚜
Когда мы дереференсим указатель - мы получаем объе...

именно. Но на каком этапе возникает ссылка?

Nastya Medveda
именно. Но на каком этапе возникает ссылка?

ссылка это просто алиас на переменную, *ptr это переменная, вот на нее будет алиас

Nastya Medveda
именно. Но на каком этапе возникает ссылка?

ох, когда ты начнешь изучать деклтайп и авто вывод типов думаю совсем голова разбухнет...

Nastya-Medveda Автор вопроса
Yalokin Kononov
ссылка это просто алиас на переменную, *ptr это пе...

то есть из-за того, что в возвращаемых параметрах укказана ссылка, то будет передана ссылка на объект, а не сам объект. Так?

Nastya Medveda
именно. Но на каком этапе возникает ссылка?

ссылка возникает, если слева от присваиваиня есть ссылка, если нет, то будет копирование

Sergey Sobolev
ссылка возникает, если слева от присваиваиня есть ...

если она возвращает по значению то будет возвращаться по значению

Sergey Sobolev
ссылка возникает, если слева от присваиваиня есть ...

даже если она возвращает объект у которого тип int&

Nastya-Medveda Автор вопроса
Yalokin Kononov
да

то есть по сути в return происходит дополнительно скрытый & и вместо return *this; получается return &(*this); так?

Nastya Medveda
то есть по сути в return происходит дополнительно ...

& это взятие адреса, а не создание ссылки

Nastya Medveda
то есть из-за того, что в возвращаемых параметрах ...

Вот что там можно вообще не понять, кроме комментария? Указатель разименовывается, получается ссылка. Она и возвращается.

ну вот если она это долго понимает, то это будет жесть..

есть еще decltype(auto) и тд

согласен, но новичкам все это мозг взрывает, вроде

Yalokin Kononov
согласен, но новичкам все это мозг взрывает, вроде

Ну не так как external linkage, который к тому же на практике часто не нужен

Kirill 🚜
Ну не так как external linkage, который к тому же ...

может быть, просто я долго писал на си давно, поэтому мне это было привычно )

Nastya-Medveda Автор вопроса
Yalokin Kononov
ну вот если она это долго понимает, то это будет ж...

Там происходит скрытая конвертация. загвоздка была в этом.

Nastya Medveda
Там происходит скрытая конвертация. загвоздка был...

ага, еще ты никогда не ловилась в неявных кастах була к инту, то еще веселье такое дебажить))

Nastya-Medveda Автор вопроса
Kirill 🚜
Конвертация из чего во что?

из объекта в ссылку на объект.

Nastya Medveda
из объекта в ссылку на объект.

Там изначально нет никакого объекта, есть только ссылка

Nastya-Medveda Автор вопроса
Kirill 🚜
Там изначально нет никакого объекта, есть только с...

так есть dereferenced pointer to this. это не ссылка, а именно объект.

Nastya Medveda
так есть dereferenced pointer to this. это не ссыл...

Объект - это если бы у него был тип Stock

Nastya-Medveda Автор вопроса
Artöm Bakri Al-Sarmini
Это ссылка

The C++ solution to this problem is to use a special pointer called this. The this pointer points to the object used to invoke a member function

Nastya Medveda
The C++ solution to this problem is to use a speci...

Как это противоречит тому, что *this это ссылка?

Nastya Medveda
так есть dereferenced pointer to this. это не ссыл...

хм... вы понимаете разницу между x, 1 и get_int(), где x это переменная типа int, а get_int - функция без параметров, которая возвращает int?

Nastya Medveda
нет не понимаю.

могу скинуть лекцию по value categories)

Nastya Medveda
нет не понимаю.

нужно пожалуй тебе почитать про это

Ilya Zviagin
нет там никаких кастов.

Есть, из Stock& в const Stock&

Kirill 🚜
Есть, из Stock& в const Stock&

да эт что за каст-то... не каст и был...

Ilya Zviagin
да эт что за каст-то... не каст и был...

настолько не каст, что между auto& и Stock const& выберет первое

Nastya Medveda
нет не понимаю.

Закрывай Прату. Выбрасывай его. Ты готова. Открывай майерса. Первая глава про категории значений

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
Ребята, а из API геокодеров (по адресам в РФ) что сейчас актуального и есть ли среди актуального бесплатное/с нормаотным лимитом запросов? ситуация простая - на сайте периоди...
Dreamer_0x01 VeseloV
8
Добрый день, а есть ли возможность завернуть уже зашифрованный пасс в креденшл, в интернете натыкаюсь только на создание пары и ее шифровки, но тогда все равно нужно расшифров...
SSS
1
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
Есть тут те у кого дети есть + 2 работы + в зал ходят + в семейной жизни все хорошо?
Abdul-Aziz M.
13
Карта сайта