из полезного массовому потребителю в этом языке только совместимость с C (вместе с довольно удобным синтаксисом статичных тайпкастов и возможностью использовать низкоуровневые сервисы операционной системы напрямую, поскольку подавляющее их большинство написано на C) и унифицированная под постфикс грамматика.
из недостатков:
* отсутствие сборщика мусора. если уничтожение объектов в куче ещё можно переложить на плечи умных указателей, то с возвратом по значению - горе горькое, бида и потеря потерь. возвраты по значению неминуемы, например, при перегрузе операторов и влекут за собой создание полноценных промежуточных объектов и необходимость в конструкторах копирования. есть вероятность, что возврат будет соптимизирован, если промежуточный объект будет анонимным, но нет гарантии, так что за про.. баный где-то конструктор копирования вы, скорее всего, дорого заплатите своим временем и нервами впоследствии.
* завязывание языка на текстовый препроцессор, управляемый совершенно другим языком. например, модульность в этом языке работает исключительно через препроцессор. отсюда же необходимость определять тела функций отдельно, отчего, в частности, следующее:
* c++ -это просто "много кода". на 1000 строк набирается едва ли стоня, реально что-то делающих. остальное - декларации. усугубляют дело такие ошибки в дизайне языка, как сокрытие методов при их перегрузке в дочерних классах и общая монструозность синтаксиса деклараций.
* невозможность компиляции шаблонов, как и поддержка только примитивных метаданных в объектных файлах вообще, драматично снижает скорость компиляции модулей.
* вездесущие неявные преобразования типов возводят количество неочевидных ошибок в квадрат.
* исключения в этом языке поддерживаются просто уё..ищно, их семантика противоречива и имеет неочевидные вырожденные случае чуть менее, чем всегда. конструкция finally не поддерживается. последнее обстоятельство окончательно заставляет программиста отказаться от использовать исключений в проекте, поскольку управление созданием и освобождением ресурсов в участках кода, подверженных возникновению исключений, становится архисложным и требующим скурпулёзности в подходе.
* куча неправильно устранённых ошибок в дизайне, читай "неоднозначностей в семантике", отчего порог вхождения в язык задирается ещё выше - все вырожденные случаи и подводные камни нужно тупо зубрить, как в том анекдоте: "запомнытэ это дэти, патамущта панят это невазможна".
* выбор базового набора возможностей языка содержит ошибки, их устранение зачастую притянуто на костылях и несёт побочные эффекты. программист вынужден строить функциональность, основываясь не на возможностях языка, а на побочных эффектах от их использования. в связи с этим типичный проект на c++ примерно на 80% состоит из кода, заставляющего язык делать через задницу то, что этот язык вообще-то не может.
достоинства интересны только гикам и эстетам:
* завязывание языка на типы. перегрузки функций
* перегрузки операторов; в c++ можно переопределять семантику почти всех операторов и служебных символов. с одной стороны, это как раз яркий пример того костыля, о котором я говорил в последнем пункте списка недостатков, но с другой стороны иногда они зело полезны.
* вывод типа в шаблонах - ня!
* пространства имён.
* ну ооп, куда ж без него.
* какое-никакое rtti.
но это всё для баловства, поскольку все вышеперечисленные достоинства введены по следующей причине: дизайнер языка прохавал тот факт, что зачастую объектная модель (модель предметной области) выглядит как некий язык, описывающий задачу в терминах самой задачи. но это же и самая крупная ошибка: ооп и яоп (моп) хоть и схожи, но совершенно несовместимы. сущности ооп никогда не эквивалентны сущностям из предметной области хотя бы даже частично, пытаться и отождествлять - грубейшая ошибка, так что реально нахер никому не нужны все эти свистелки и перделки, ими только играться.
Другие языки программирования и технологии
Напишите достоинства и недостатки С++. Информация о С++ Достоинства и недостатки С++
Ну это как достоинства и недостатки мостов/домов описывать. Из недостатков могу отметить тупое присоединение хедеров препроцессором.
C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg.
Достоинств масса, удобно писать проги, язык очень гибкий, можно даже Операционку свою создать. На чём твоя фантазия ограничится. Минусы только в сложности изучения, но если понять смысл, то всё как по маслу пойдёт)
Похожие вопросы
- на чем лучше программировать? на Microsoft Visual Studio с++ или c++ builder? у кого какие достоинства и недостатки?
- Какие достоинства и недостатки языка PHP?
- достоинства/недостатки (Oracle Database ) перед Microsoft Acces
- Красивый вывод информации в TurboPascal
- Можно ли копировать информацию с сайта, если она защищена авторским правом?
- Дана величина A выражающая обьём информации в битах. Я написал программу которая переводит A в биты,Кб,Мб,Гб. проверьте.
- Каковы недостатки платформы 1С?
- Делаю сайт, прошу указать недостатки
- Какие недостатки у Windows Media Player? Помимо того, что не хочет открывать FLV и артачится при воспроизведении >>>>
- Рассудите спор. Один человек заявил в своем видео, что файл - это единица информации, я возразил (+)