1 | |
перегрузка == для класса string18.08.2013, 15:50. Показов 3248. Ответов 20
Метки нет (Все метки)
можно ли для существующего класса string перегрузить оператор не вмешиваясь в библиотеку?
ни разу не сталкивался. Error: стринг не ялвется однозначным!
0
|
18.08.2013, 15:50 | |
Ответы с готовыми решениями:
20
Перегрузка оператора + для класса String Перегрузка оператора >> для пользовательского класса String Перегрузка потокового ввода/вывода для класса с полем типа string Перегрузка операторов класса String |
18.08.2013, 16:31 | 2 | |||||
Можно создать порожденный класс с перегруженным оператором.
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
18.08.2013, 16:34 | 3 | |||||
:/
Добавлено через 3 минуты
2
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
18.08.2013, 16:39 | 4 |
castaway, имхо, наследоваться от стандартных типов, в том числе std::string - не очень хорошая идея, они все-таки для этого не предназначены.
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
18.08.2013, 16:44 | 6 |
Хотя бы потому, что у std::string нет виртуального деструктора, а удаление объекта, унаследованного от класса без виртуального деструктора через указатель - undefined behaviour.
0
|
18.08.2013, 16:53 | 7 | |||||
1
|
Ушел с форума
|
|||||||||||
18.08.2013, 16:55 | 8 | ||||||||||
Можно:
думаем, а оно нам надо ?
0
|
18.08.2013, 16:56 | 9 | |||||
Если нужно переопределить поведение std::string, то лучше как-нибудь так:
правда не все так просто, как кажется на первый взгляд (например операторы << и >> теперь работать не будут), но зато (имхо) более красиво.
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
||||||
18.08.2013, 16:56 | 10 | |||||
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
18.08.2013, 17:08 | 12 |
Какой ошибки? Я же еще в первом посте написал:
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
18.08.2013, 17:20 | 14 |
B * - ничем, A * - чревато, чем - я показал. Если вы гарантируете, что все объекты будут удаляться через указатель типа B *, а объекты класса С - через указатель С *, и так далее (про умные указатели вообще промолчу) - милости прошу. Вот только мне кажется, что гарантировать этого нельзя (иначе зачем вообще нужно наследование), и рано или поздно при наследовании от класса без виртуального деструктора столкнетесь с не очень ожидаемым поведением, когда деструкторы унаследованных классов будут не вызываться.
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
18.08.2013, 17:27 | 17 |
0
|
19.08.2013, 12:06 [ТС] | 20 | |||||
0
|
19.08.2013, 12:06 | |
19.08.2013, 12:06 | |
Помогаю со студенческими работами здесь
20
Перегрузка операторов класса String Перегрузка преобразования класса-строка в тип string (и наоборот) Перегрузка оператора >> для дочернего класса от базового виртуального класса Перегрузка оператора == для string Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |