|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
Свой класс string, нужна помощь с перегрузкой операторов15.01.2024, 17:03. Показов 6786. Ответов 99
Доброго времени суток.
Создал свой класс string. Цель создания своего класса строк - это скорость работы со строками и второе в образовательных целях. Если реализация получится удачной сделаю библиотеку для личного использования. Сейчас реализованы строки типа char потом добавлю wchar_t. new и delete решил не использовать, так как использую простой тип char. Вроде утечек памяти нет, а работать в теории должно быстрее. Прошу просмотреть код и дать рекомендации по оптимизации или указать на ошибки в коде, буду очень признателен. У меня возник вопрос с перегрузкой операторов, не понимаю как их сделать правильно, представленная реализация вроде работает правильно. Подскажите как правильно перегрузить [], +=, =, +. За ранее благодарю за ответы.
0
|
||||||
| 15.01.2024, 17:03 | |
|
Ответы с готовыми решениями:
99
Класс "Массив дробных чисел" с перегрузкой операторов Класс "Длинные числа" с перегрузкой операторов Создать класс "деньги" с перегрузкой операторов |
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 16.01.2024, 21:41 [ТС] | ||
Все, что относится к строке инкапсулировано и как бы в теории в памяти рядышком.
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||||||
| 16.01.2024, 21:53 | |||||||
|
У вас уже есть класс string
В него всё и инкапсулируйте. Вложенные структуры имеют смысл если их много и какие-то данные хочется отдельно логически структурировать (или хранить в контейнерах). А тут - ничего не изменится, если stringA вовсе убрать. Будет просто и понятно: вот данные класса string, вот его методы работы с этими данными. Если хочется визуально отделить данные от методов - просто сгруппировать их:
Добавлено через 1 минуту
0
|
|||||||
|
Вездепух
13226 / 6858 / 1827
Регистрация: 18.10.2014
Сообщений: 17,381
|
||
| 16.01.2024, 22:05 | ||
string. Вопрос в том, зачем внутри еще заведен некий stringA?
0
|
||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||
| 16.01.2024, 22:44 [ТС] | ||||||||||||
|
В коде
Добавлено через 10 минут Да а перед этим хотел написать на чистом си, но где-то через полчаса резко передумал. ![]() ![]() Добавлено через 4 минуты некоторые странности можно видеть в реализации первого класса в топике из-за изначальной
Добавлено через 3 минуты В си нет классов и там структуры просто структуры а функции просто функции. поэтому выглядит это более громоздко и некрасиво. А с++ как искусство
0
|
||||||||||||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 16.01.2024, 22:46 | |||
|
Вам же для учебы - вот и потренируетесь с шаблонами, дело полезное. Добавлено через 1 минуту
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 16.01.2024, 23:03 | |
|
Signum7, ваши основные ошибки : (проектирование) отсутствие четкой задачи,
(реализация) отсутствие АТД(абстрактный тип данных). То есть, вы пишите не последовательно. Вам нужно пересмотреть необходимые уровни абстракций для данной задачи.
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||
| 16.01.2024, 23:15 [ТС] | |||
|
Добавлено через 7 минут
0
|
|||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||||||
| 16.01.2024, 23:24 | |||||||
![]() Пересмотром "уровней абстракций" тут не отделаться
0
|
|||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 16.01.2024, 23:37 [ТС] | ||
|
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 16.01.2024, 23:44 | |
|
Signum7, я без надсмехательств совершенно.
Вы все делаете верно, надо учиться, на кошках.
0
|
|
|
фрилансер
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
|
|||||
| 17.01.2024, 07:27 | |||||
constexpr staticИ почему именно к _MAX_PATH привязка (макрос не относится к стандартным) тут вообще много лишнего написано. А про правило пяти забыто ![]() Но потом всё равно сжечь (с) (это неприличный анекдот )
0
|
|||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||||||||||||||||
| 17.01.2024, 14:42 [ТС] | |||||||||||||||||
|
для интереса сравнил скорость выделения памяти для new malloc calloc для debug x86, mvso 22 с обновлениями.
такие результаты получились
Добавлено через 2 минуты
Добавлено через 8 минут более честный тест наверное был бы на чистой винде с зафиксированной частотой процессора. Если у кого есть возможность сравнить разницу в скорости на линуксе или старые реализации new malloc calloc буду признателен очень интересно
0
|
|||||||||||||||||
|
фрилансер
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
|
|
| 17.01.2024, 15:36 | |
|
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 17.01.2024, 15:43 | ||
|
Он попроще, чем задумка ТС, но уже готовая болванка.
0
|
||
|
фрилансер
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
|
|
| 17.01.2024, 15:48 | |
|
KSergey9, но у него есть тотальный недостаток
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 17.01.2024, 16:02 | |
|
Алексей1153
Да!!
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 17.01.2024, 16:19 [ТС] | |
|
0
|
|
|
фрилансер
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
|
|
| 17.01.2024, 16:27 | |
|
Signum7, пост 39 - где там перемещение ?
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 17.01.2024, 16:35 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 17.01.2024, 16:56 | |
|
0
|
|
| 17.01.2024, 16:56 | |
|
Написать класс "Дата" с перегрузкой операторов
Перегрузка операторов. Класс String Свой класс String Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|