|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
Свой класс string, нужна помощь с перегрузкой операторов15.01.2024, 17:03. Показов 6741. Ответов 99
Доброго времени суток.
Создал свой класс string. Цель создания своего класса строк - это скорость работы со строками и второе в образовательных целях. Если реализация получится удачной сделаю библиотеку для личного использования. Сейчас реализованы строки типа char потом добавлю wchar_t. new и delete решил не использовать, так как использую простой тип char. Вроде утечек памяти нет, а работать в теории должно быстрее. Прошу просмотреть код и дать рекомендации по оптимизации или указать на ошибки в коде, буду очень признателен. У меня возник вопрос с перегрузкой операторов, не понимаю как их сделать правильно, представленная реализация вроде работает правильно. Подскажите как правильно перегрузить [], +=, =, +. За ранее благодарю за ответы.
0
|
||||||
| 15.01.2024, 17:03 | |
|
Ответы с готовыми решениями:
99
Класс "Массив дробных чисел" с перегрузкой операторов Класс "Длинные числа" с перегрузкой операторов Создать класс "деньги" с перегрузкой операторов |
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 18.01.2024, 21:06 [ТС] | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
| 19.01.2024, 17:33 [ТС] | ||||||
|
Подскажите как правильно сделать проверку char или wchar_t правильно. В качестве типа использовать только эти типы.
Что-то типа такого:
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 19.01.2024, 18:09 | |
|
Signum7, static_assert плюс is_same
1
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||||||
| 19.01.2024, 19:24 [ТС] | |||||||
0
|
|||||||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|||||||
| 19.01.2024, 19:33 | |||||||
![]()
0
|
|||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 19.01.2024, 19:38 [ТС] | ||
0
|
||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|
| 19.01.2024, 19:52 | |
|
Signum7, через задницу и само без усилий получится, а специально лучше так не делать
1
|
|
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
|||||||
| 20.01.2024, 02:15 | |||||||
2
|
|||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 20.01.2024, 18:36 [ТС] | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 20.01.2024, 20:37 | |
|
Signum7, static_assert доступен с C++11.
C++ - статически типизированный ЯП. То есть, ошибка будет обнаружена на этапе компиляции, с assert , только в режиме выполнения и только в отладочном режиме, в релизе его не будет. Ну а requiers, да с 20, приведен как возможность современног C++. Вопрос нужен ли вам вообще С++?
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 20.01.2024, 20:44 [ТС] | ||
|
0
|
||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
|||||||
| 20.01.2024, 20:49 | |||||||
static_assert - это пост-проверка. То есть ваша шаблонная функция всегда существует, но если вы вызовете ее неправильно, то произойдет ошибка.requires - это constraint. Это пре-проверка, которая принимается во внимание в процессе overload resolution. В результате для неправильного набора шаблонных параметров такой функции не будет существовать вообще (или может правильнее сказать, что для неправильного набора шаблонных параметров она будет невидимой). Constraints - развитие идеи SFINAE и в частности std::enable_if. То есть того же самого вы могли добиться и в С++11, используя std::enable_if вместо requires
1
|
|||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||
| 20.01.2024, 21:42 [ТС] | ||||||||||||
|
Сделал такие функции для своего класса вместо перегрузки strcpy_s wcscpy_s решил сделать свои шаблонные. не хочу UB b прочую гадость посмотрите пожалуйста.
Добавил еще такую функцию
0
|
||||||||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
||
| 20.01.2024, 23:02 | ||
str != nullptr. str != nullptr - это, естественно, проверка именно времени выполнения, которая никакого отношения ни к каким static_assert/requires/stf::enable_if не имеет вообще.
1
|
||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
| 21.01.2024, 01:50 [ТС] | ||||||
|
То что на данный момент
0
|
||||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 21.01.2024, 02:02 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||||||||||||||||
| 21.01.2024, 06:05 [ТС] | |||||||||||||||||
Вот полностью рабочий класс проверьте пожалуйста, буду признателен. Уже глаза замылились нечего не вижу.
Так я тестировал на вылеты, вроде норм
0
|
|||||||||||||||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 21.01.2024, 17:56 | |
|
https://github.com/JeremyDsilva/String
бегло пролистал, по-моему очень похоже на то, что ты пишешь. (но не шаблонах) там в срр есть оператор >> в самом конце
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||||||
| 21.01.2024, 21:21 [ТС] | |||||||
|
Добавлено через 1 час 21 минуту нашел такую конструкцию скажите ее можно использовать? либо есть альтернативы которые можете рекомендовать?
0
|
|||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 22.01.2024, 17:05 [ТС] | |
|
Свой шаблонный класс string для char wchar_t, оптимизация Продолжение...
0
|
|
| 22.01.2024, 17:05 | |
|
Написать класс "Дата" с перегрузкой операторов
Перегрузка операторов. Класс String Свой класс String Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|