|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
||||||
А можно ли такое делать?09.11.2011, 22:45. Показов 1205. Ответов 16
Метки нет (Все метки)
Решил я закрепить свои знания по перегрузке операторов и написал свой класс стринга. Естественно я перегрузил оператор извлечения из потока.
Получилось следующие:
0
|
||||||
| 09.11.2011, 22:45 | |
|
Ответы с готовыми решениями:
16
Можно ли на C++ делать что то для сайта? можно ли делать виртуальными перегружаемые операторы?
|
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
| 09.11.2011, 22:47 | |
|
0
|
|
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 22:50 [ТС] | |
|
А подробнее?
0
|
|
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
| 09.11.2011, 22:52 | |
|
0
|
|
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 22:55 [ТС] | |
|
Но код работает. Я выделяю под один сивол, ввожу 10,20,30 символов, и он их воспринимает. Почему?
Добавлено через 1 минуту и в str становится 10,20,30 символов. Как так?
0
|
|
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 22:58 [ТС] | |
|
А как тогда сделать правильно?
0
|
|
|
Заблокирован
|
||||||
| 09.11.2011, 23:05 | ||||||
|
Честно говоря, я вообще не вижу логики:
0
|
||||||
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 23:12 [ТС] | |
|
len = -1 когда строка пустая, совсем. причем тут нарушение инкапсуляции, если эта функция дружественная? А вам хватит ума написать как надо правильно, а не критиковать вещи совершенно не касающиеся темы?
Добавлено через 4 минуты str - это указатель на char, причем тут указатель на строку?
0
|
|
|
Заблокирован
|
|||
| 09.11.2011, 23:14 | |||
|
Мне ума хватит. Я писал когда свой деццкий велосипед строк. Это было первое, что я сделал на с++. Он у меня до сих пор лежит. Но это деццкий код. То есть сразу видно, что писал его ещё новичок) Однако, таких вот откровенных ляпов и ошибок логики в нем конечно нет. Он полностью работоспособный. Добавлено через 1 минуту Сам язык не делает различие между указателем на объект, или на массив объектов. За этим следит программист. Его задача знать что это на самом деле - указатель на объект, или на массив. И соотвественно не встрять на этом. Не написать delete ptr; там, где требуется delete[] ptr; и тп
1
|
|||
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 23:16 [ТС] | |
|
конечно же вы не поделитесь своими деццкими разработками. Молоть языком очень прошу не в этой теме. Я обратился за помощью, а не за критикой тролля.
0
|
|
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 09.11.2011, 23:18 | |
|
Zyoma, тут проблема с выделением памяти.
Тебе заранее неизвестно, сколько символов будет введено. Поэтому в конструкторе твоего класса String нужно застолбить некий минимальный размер, например, 32 символа. В функции ввода надо вводить посимвольно и считать символы. Так как возможен ввод более 32 символов, то в кллассе надо предусмотреть приватную функцию resize(), которая должна делать следующее: затребовать новый динамический массив скопировать туда уже занятые символы удалить старый массив Сменить указатель на новый. Размер нового динамического массива обычно в два раза больше текущего.
1
|
|
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 23:21 [ТС] | |
|
Вот теперь я понял.
Спасибо огромное.
0
|
|
|
Заблокирован
|
||||||||||||
| 09.11.2011, 23:23 | ||||||||||||
|
А что касается критики, то я вам указал на критические ошибки. Которые приведут к крушению. Если вы выделяете память вот так: char ptr = new char; То удалять её вы сможете только вот так: delete ptr; ptr=0; Если вы выделяете память вот так: char ptr = new char [MAX]; То удалять её вы сможете только вот так: delete [] ptr; ptr=0; То есть, правило простое: если выделял память под массив, то и удаляй тоже массив Если выделял под объект, то и удаляй тоже объект. Если попутаешь - потом прибежишь на этот форум и будишь спрашивать: почему у меня в рантайме лагает. Потому что компилятор не различает указатель на массив, от указателя на объект. А теперь смотри как ты создаёшь:
Это называется "порча памяти", и "неизвестное поведение". Человеку говоришь: у тебя ошибка, мина замедленного действия. А он "аццтань, ты тролль!" Ну тупи дальше тогда.
1
|
||||||||||||
|
10 / 10 / 3
Регистрация: 05.11.2010
Сообщений: 30
|
|
| 09.11.2011, 23:28 [ТС] | |
|
Все конечно хорошо, спасибо. Но я читал столько высокомерия в твоих указаниях об ошибках, что стало тошно.
0
|
|
| 10.11.2011, 00:14 | |
|
1
|
|
| 10.11.2011, 00:14 | |
|
Помогаю со студенческими работами здесь
17
Можно ли делать шаблоны дружественных функций? Можно ли считать такое решение верным Такое и в правду можно сделать в консоли? Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы с++ такое k, для которого можно построить множество Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор под наименованию группы (на. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|