Войти
ПрограммированиеФорумОбщее

[C++]<list> Полиморфность дохнет в stl контейнере. (4 стр)

Страницы: 1 2 3 4
#45
(Правка: 10:31) 10:28, 11 окт. 2019

Пожалуйста:
1. Отсутствие виртуального деструктора в базовом классе
2. Использование директивы inline для функции с нетривиальной логикой (более чем в несколько строк кода)
3. Лишняя точка с запятой после определения тела функции.
Все это говорит о том, что вы довольно небрежно подошли к изучению языка, но главным образом п.1, свидетельствующий о том что вы плохо понимаете что такое RTTI и таблицы виртуальных методов в С++, и как это работает. Ответ на ваш основной вопрос собственно нужно искать где-то в этом разделе учебника по С++.

П.С.
Код смотрел по диагонали, возможно там еще есть ошибки.


#46
11:01, 11 окт. 2019

Клапауций
А слабо книжку по С++ прочитать и попытаться представить как бедняга-компилятор написанное тобой исполнять будет?
Сам же себя обругаешь впоследствии.
Тут не одна ошибка, тут полное непонимание что делаешь, во множестве проявлений.

#47
11:11, 11 окт. 2019

Zab
> Тут не одна ошибка, тут полное непонимание что делаешь, во множестве
> проявлений.

я бы даже сказал - тут полная Ж...

#48
14:26, 11 окт. 2019

totoro
Zab
innuendo
разбрюзжались: тоже мне деды на пенсии.

:LOL

#49
14:50, 11 окт. 2019

Клапауций
Хочешь по пунктам?

Начнем с объявления типов:
1. У тебя в B и C по два мембера val. И такое ощущение, что ты этого не осознаешь, пытаешься работать со случайно попавшимся, все время с разными. Таких ошибок не делают даже шарповцы, переехавшие на С++. У них с контролем времени жизни объектов проблемы обычно, но не со структурой данных.

test_bad:
2. B и С у тебя вообще в список не складываются, там только A, образующийся из B и C через конструктор копирования.

test_good:
3. Удалять объекты кто будет? Ты же намусорил в памяти, по черному.
4. Виртуальные деструкторы в такой ситуации обязательны, иначе это бомба, тут уже не о мусоре в памяти речь идет, а о падениях.
5. Ты распечатываешь все время одно и тоже значение val=888, а вовсе не то, что ты скормил в конструкторе.

Ну и какие выводы мы должны сделать? Что ты про C++ только слышал краем уха, тыркнулся - вроде заработало? С С++ такие методы освоения не канают, надо знать, а не догадываться, как что устроено. C++ - вовсе не дружественный язык, ошибок не прощает.

#50
15:13, 11 окт. 2019

Zab
> Зарегистрирован: (12:02) 11 мая 2005
Ура, ты стал С++ миддлом. За 15 лет.

#51
15:16, 11 окт. 2019

lookid
> миддлом
Распространенная ошибка в терминологии. Мидл-программист, это не мидллевел, а мидлвэа. Иными словами, программист инструментария, а не что-то среднее между сеньором и юниором. Так путаются только в русскоязычной среде, почему-то.

#52
15:20, 11 окт. 2019

Zab
> Мидл-программист,
может просто программер среднего роста

#53
15:33, 11 окт. 2019

innuendo
> может просто программер среднего роста
Таких нету. Либо доверяют принимать самостоятельные решения, хотя бы локальные, тогда ты сеньор, либо не доверяют - тогда юниор. Никакой середины.
Но есть особая позиция в проектах - разработчик инструмента. Это программист уровня сеньора, который не принимает прямого участия в разработке, а только делает всякие удобства для остальных. Может быть вообще за рамками проекта. Для этого особый склад характера нужен, на такую позицию ищут людей отдельно, мидл - это оно и есть. Middleware programmer, если писать полностью.
Однако, русские чаще всего с английским знакомы плохо и даже когда видят полное написание, не способны отличить middleware от middle level.

#54
17:18, 11 окт. 2019

Zab
Это работает только в больших компаниях, где можно отдавать ROI только синьерам и выше. В компаниях до 100 человек, за ROI отвечают все. Даже ждуны. Это как сказать, что в прод коммитят только синьеры. А остальные пишут фронтенд к аналитике или утилиты в помощь.

#55
(Правка: 20:47) 20:44, 11 окт. 2019

Zab
> не способны отличить middleware от middle level
хорошая попытка, но нет

+ Показать

вот ещё вдогонку
https://medium.com/deliveredtechnologies/the-difference-between-j… -9ae833534f41

Страницы: 1 2 3 4
ПрограммированиеФорумОбщее