3 ответа
Что вы подразумеваете под "сменой парадигмы"?
C++ 0x представляет много новых функций, которые, конечно, изменят способ написания программ.
Есть мелочи, которые, вероятно, окажут большое влияние на используемый синтаксис, но которые не сильно изменят семантику. Примерами являются лямбда-функции и цикл for на основе диапазона: они обеспечат лучший синтаксис для того, что мы все уже делаем.
Тогда есть большие вещи, которые изменят способ, которым вещи работают. Особенно:
Ссылка на Rvalue может заставить вас по-другому взглянуть на то, как работают объекты и как их использовать: вероятно, будет проще передавать (и возвращать) объекты по значению.
Явные операторы преобразования позволят нам определить операторы преобразования, хотя делать это в C++03 было рискованно.
C++0x не вводит никаких новых парадигм и не меняет никаких парадигм.
Изменить: Однако реализация этих парадигм может быть довольно сильно изменена с помощью шаблонов с переменными значениями и ссылок на значения, просто для начала.
На самом деле, я думаю, что да, есть смена парадигмы. Предостережение: я никогда не писал объектно-ориентированный код на C++.
Изменение, которое может позволить изменение парадигмы, является стандартизацией умного указателя std::shared_ptr
, Теперь, наконец, стандартная библиотека содержит хорошо реализованный, эффективный и, вероятно, безошибочный общий указатель.
Эксперты C++ знают, как трудно их правильно понять, и что большинство библиотечных реализаций указателей подсчета ссылок, вероятно, содержат незначительные ошибки. Поэтому важно, наконец, иметь надежную реализацию, даже если (по какой-то безумной причине) компания запрещает использовать Boost.
Это может иметь радикальные последствия для количества утечек памяти: если объектно-ориентированные приложения C++ прекратили утечку памяти, это было бы изменением парадигмы.
С другой стороны, компании, которые используют свои собственные умные указатели в ООП-коде, вероятно, в любом случае не будут переходить на C++0x в ближайшие десять лет.
(Просто чтобы подчеркнуть это еще раз, поскольку это неоднократно понималось неправильно: я не называю технологию интеллектуальных указателей изменением парадигмы. Я имею в виду полное исчезновение утечек памяти в объектно-ориентированных архитектурах.)