Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
overloading by return value
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: overloading by return value (Прочитано 10512 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист
Offline
overloading by return value
«
:
09-08-2009 09:29 »
overloading by return value
после функциональной парадигмы, мне в с++ не хватает перезагрузки функции по возвращаемому значению:
возьмем абстрактно класс string, с функцией substring(), которая возвращает подстроку из объекта.
для выражений типа:
string s=" lalal";
s=s.substring(1,-1)+string("hehehe");
нет проблем в реализации на с++, но если захочется написать:
s.substring(1,3)=string("alpha_delta");
то возникнет много вопросов с оптимизацией - единственно что приходит в голову, реализовать через временный объект, который меняет функциональность в зависимости от контекста l\rvalue
чем этот подход может показаться неоптимальным по сравнению с ... ?
может существуют какие-то еще патерны для таких ситуаций ( в контексте простенького regex)?
Записан
1n c0de we trust
Sla
Модератор
Offline
Пол:
Re: overloading by return value
«
Ответ #1 :
09-08-2009 14:56 »
ппц
s.substring(1,3)=string("alpha_delta");
ах, ну да!!! если захочется...
спрашивается - нах*я?
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Mayor
Специалист
Offline
Re: overloading by return value
«
Ответ #2 :
09-08-2009 17:25 »
Цитата: Sla от 09-08-2009 14:56
спрашивается - нах*я?
ну может просто потренироваться?
или в regex: есть строка, есть патерн - может потребоваться просто вывести его из строки, а может быть заменить часть строки попавшей под патерн на другую строку
Записан
1n c0de we trust
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
Re: overloading by return value
«
Ответ #3 :
09-08-2009 18:48 »
Mayor
, А физический смысл данного выражения
Цитата
s.substring(1,3)=string("alpha_delta");
Распиши, что ты хочеш получить данным пируэтом.
Записан
Не будите спашяго дракона.
Джаффар (Коша)
Sla
Модератор
Offline
Пол:
Re: overloading by return value
«
Ответ #4 :
10-08-2009 06:25 »
Finch
, он хочет
1. Впихнуть не впихиваемое
2. с первого по третий символ входной строки впихнуть в исходную
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: overloading by return value
«
Ответ #5 :
10-08-2009 06:39 »
а так что мешает сделать
s.substring(1,3,"alpha_delta");
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Sla
Модератор
Offline
Пол:
Re: overloading by return value
«
Ответ #6 :
10-08-2009 06:48 »
Цитата: Алексей1153++ от 10-08-2009 06:39
а так что мешает сделать
s.substring(1,3,"alpha_delta");
Функциональная пардигма
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: overloading by return value
«
Ответ #7 :
10-08-2009 07:04 »
а что это такое
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Sla
Модератор
Offline
Пол:
Re: overloading by return value
«
Ответ #8 :
10-08-2009 07:09 »
Алексей1153++
, так это надо у старттопика спросить
это ж ему она спокойно жить не дает
Цитата
после функциональной парадигмы, мне в с++ не хватает перезагрузки функции по возвращаемому значению:
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Вад
Команда клуба
Offline
Пол:
Re: overloading by return value
«
Ответ #9 :
10-08-2009 08:01 »
Цитата: Mayor
s.substring(1,3)=string("alpha_delta");
Это ты replace имеешь в виду?
Цитата:
http://cplusplus.com/reference/string/string/replace/
string& replace ( size_t pos1, size_t n1, const string& str );
string& replace ( iterator i1, iterator i2, const string& str );
и так далее?
Записан
Mayor
Специалист
Offline
Re: overloading by return value
«
Ответ #10 :
10-08-2009 10:17 »
Цитата: Вад от 10-08-2009 08:01
Это ты replace имеешь в виду?
Цитата:
http://cplusplus.com/reference/string/string/replace/
string& replace ( size_t pos1, size_t n1, const string& str );
string& replace ( iterator i1, iterator i2, const string& str );
и так далее?
ага но только, с поддержкой copy on write - если фунткор? слева от оператора= вызывается replace, если справа то класический substring ( чтобы строку лишний раз не аллокировать, до тех пор пока не придет время ее изменения )
Записан
1n c0de we trust
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
overloading by return value
Загружается...