Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: overloading by return value  (Прочитано 9731 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 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
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-08-2009 14:56 » 

ппц

s.substring(1,3)=string("alpha_delta");

ах, ну да!!! если захочется...

спрашивается - нах*я?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 09-08-2009 17:25 » 

спрашивается - нах*я?
ну может просто потренироваться?

или в regex: есть строка, есть патерн - может потребоваться просто вывести его из строки, а может быть заменить часть строки попавшей под патерн на другую строку
Записан

1n c0de we trust
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 09-08-2009 18:48 » 

Mayor, А физический смысл данного выражения
Цитата
s.substring(1,3)=string("alpha_delta");
Распиши, что ты хочеш получить данным пируэтом.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 10-08-2009 06:25 » 

Finch, он хочет
1. Впихнуть не впихиваемое
2. с первого по третий символ входной строки впихнуть в исходную
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 10-08-2009 06:39 » 

а так что мешает сделать

s.substring(1,3,"alpha_delta");
Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 10-08-2009 06:48 » 

а так что мешает сделать

s.substring(1,3,"alpha_delta");
Функциональная пардигма
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 10-08-2009 07:04 » 

а что это такое
Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 10-08-2009 07:09 » 

Алексей1153++, так это надо у старттопика спросить
это ж ему она спокойно жить не дает
Цитата
после функциональной парадигмы, мне в с++ не хватает перезагрузки функции по возвращаемому значению:
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 10-08-2009 08:01 » 

Цитата: Mayor
s.substring(1,3)=string("alpha_delta");
Это ты replace имеешь в виду?
string& replace ( size_t pos1, size_t n1,   const string& str );
string& replace ( iterator i1, iterator i2, const string& str );
и так далее?
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #10 : 10-08-2009 10:17 » 

Это ты 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]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines