Смена парадигмы ООП 0x? - PullRequest
       24

Смена парадигмы ООП 0x?

0 голосов
/ 28 января 2011

Есть ли и если да, то какие?

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Что вы подразумеваете под «сменой парадигмы»?

C ++ 0x представляет множество новых функций, которые, конечно, изменят способ написания программ.

Есть небольшие вещи, которые, вероятно, окажут большое влияние на используемый синтаксис, но которые не сильно изменят семантику. Примерами являются лямбда-функции и цикл for на основе диапазона: они обеспечат лучший синтаксис того, что мы все уже делаем.

Тогда есть большие вещи, которые изменят способ работы вещей. В частности:

  • Ссылка Rvalue может заставить вас по-другому взглянуть на то, как работают объекты и как их использовать: вероятно, будет проще передавать (и возвращать) объекты по значению.

  • Явные операторы преобразования позволят нам определить операторы преобразования, хотя делать это в C ++ 03 было рискованно.

1 голос
/ 28 января 2011

На самом деле, я думаю, что да, есть смена парадигмы. Предостережение: я никогда не писал объектно-ориентированный код на C ++.

Изменение, которое может привести к смене парадигмы, - это стандартизация умного указателя std::shared_ptr. Теперь, наконец, стандартная библиотека содержит хорошо реализованный, эффективный и, вероятно, безошибочный общий указатель.

Эксперты C ++ знают, как трудно их правильно понять, и что большинство библиотечных реализаций указателей подсчета ссылок , вероятно, содержат незначительные ошибки. Поэтому важно наконец получить надежную реализацию, даже если (по какой-то безумной причине) компания запрещает использование Boost.

Это может иметь серьезные последствия для числа утечек памяти: Если объектно-ориентированные приложения C ++ прекратили утечку памяти, , что будет сдвигом парадигмы.

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

(Просто чтобы подчеркнуть это еще раз, поскольку это неоднократно понималось неправильно: я не , ссылаясь на технологию интеллектуальных указателей как на смену парадигмы. Я имею в виду полное исчезновение утечек памяти в объекте -ориентированные архитектуры.)

1 голос
/ 28 января 2011

C ++ 0x не вводит никаких новых парадигм и не меняет никаких парадигм.

Редактирование: реализация этих парадигм, однако, может быть довольно сильно измененас шаблонами variadic и ссылочными значениями rvalue, просто для начала.

...