![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
привет.
проглядывая C++11 Status, обратил внимание на то, что сабж не реализован. помимо этого, я что-то никак представить не могу, для чего оно надо и как его использовать... подскажите, кто в теме. спасибо. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
ну как же. У тебя есть класс, например String. У него есть метод, например: String String::upperCase() const - возвращает текущую строку, приведенную к верхнему регистру. Сейчас тебе необходимо делать копирование. В случае же rvalue reference for *this его делать не нужно будет (необходимо будет только перенести данные из одного объекта в другой)! В итоге:
- нет одного выделения памяти - нет одного освобождения памяти - возможно плюшки с кэшем, так как работа будет без копирования. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
или: "String &&String::upperCase() const" ? а вообще да, пример весьма показательный. спасибо. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Честно говоря, я еще не особо с С++11 работал. Поэтому точно не знаю. Разве в моем случае возвращается не rvalue?
Кстати, я тут посмотрел, clang имеет большую поддержку C++11, правда, еще многое только в SVN. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
да, на два пункта впереди. ничего, скоро я сборки clang тоже буду предоставлять ;) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
суть проблемы не в возвращающем значении, а в аргументе this.. сейчас по нему нельзя узнать rvalue он или нет.. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а как-то более развернуто можете объяснить, что Вы имеете ввиду? |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
к примеру есть такие свободные функции с акцентом на принимаемое значение..
как тоже самое сделать для класса, чтоб вместо
сработала такая конструкция :
Это сообщение отредактировал(а) mes - 13.4.2012, 15:12 |
||||||
|
|||||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
mes, правильно ли я понимаю, что будет какой-то синтаксис (которого сейчас нет) для перегрузки методов класса для rvalue и не-rvalue this ? Типа такого
Это сообщение отредактировал(а) borisbn - 13.4.2012, 16:26 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
я не в курсе ![]() это по сути верно ![]() ага, а в первом случае можно изменять и возвращать себя ага, риторический.. ![]() Это сообщение отредактировал(а) mes - 13.4.2012, 20:00 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
синтаксис rvalue reference for *this будет такой:
Это сообщение отредактировал(а) bsa - 13.4.2012, 23:33 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
bsa, это к чему?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
На всякий случай. Если кто не знает, а посмотреть лень.
Это сообщение отредактировал(а) bsa - 13.4.2012, 23:34 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я это и имел ввиду.
я не знаю что это. это сигнатура метода использующего rvalue для *this? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |