
Наконец-то довелось увидеть воочию и посетить лекцию небезызвестного Бьярне Строуструпа. Речь на лекции шла о новом стандарте Cи++ - C++0x, об основных особенностях которого Бъярне попытался нам рассказать в течении 2-х с небольшим часов. Обо всем он, естественно, нам рассказать не смог, но главные черты стандарта C++0x были представлены хорошо и кратко.
Итак, основная цель стандарта C++0x заключается в улучшении производительности Си++. Улучшение производительность "по Си++" - это либо повышение быстродействия кода, либо уменьшение количества требуемой им памяти.
Теперь в язык официально встроен новый тип ссылок - ссылки на временный объект, или rvalue. Ссылка на временный объект будет объявляться при помощи оператора тип&&. В предыдущих версиях стандарта Си++ временные объекты могли передаваться в функции лишь в качестве неизменяемых ссылок (тип const&). Теперь же, при помощи ссылок на временные объекты, любая функция сможет изменять их по своему усмотрению.
Таким образом создается база для "перемещений", а не "копирований" объектов. Т.е. если раньше функция возвращала временный объект, и нам для сохранения данных этого объекта приходилось его копировать в новый объект, то теперь, указав в качестве возвращаемого типа ссылку временного объекта (тип&&), мы получаем возможность избежать ресурсоемкого копирования.
В целях безопасности переменная никогда не будет рассматриваться в качестве ссылки на временный объект, если мы явно не воспользовались шаблонной функцией std::move<T>(). Только в этом случае для объектов данного класса будет задействовано "перемещение", а не "копирование".
Так же в новом стандарте было улучшено конструирование объектов. Теперь, например, можно использовать вложенные конструкторы, когда один конструктор объекта вызывает другой свой конструктор. А наследующие классы теперь получили возможность указывать конструкторы базового класса, которыми они хотели бы воспользоваться при своем создании.
Так же речь шла о новых встроенных типах Си++, однако обо всем, к сожалению, Бьярне рассказать так и не успел. Однако и того, что он нам успел показать, было достаточно для нескольких дней усваивания.