C ++ Telltales, часть 4:

Предварительные декларации и ‹iosfwd›

Это четвертая часть моей серии статей о C ++ Telltales, в которой я делюсь некоторыми советами и приемами по работе с C ++. Не стесняйтесь смотреть и другие части серии здесь!

Прямые объявления в C ++ полезны для экономии времени компиляции, поскольку компилятору не нужно проверять единицы перевода во включенном заголовке. Также он имеет другие преимущества, такие как предотвращение загрязнения пространства имен, позволяя использовать идиому PImpl, и в некоторых случаях это может даже уменьшить размер двоичного файла. В C ++ есть классный заголовок ‹iosfwd›, который объявляет предварительное объявление для всех потоков C ++, таких как std :: stringstream и std :: fstream.

Если у вас есть класс, который использует любой из потоковых классов из стандартного C ++, вы должны использовать заголовок ‹iosfwd› в объявлении класса и включать только необходимые заголовки в реализацию. См. Следующий фрагмент в качестве примера:

В общем, вы должны как можно чаще использовать форвардные объявления. Изменение ‹sstream› на файл заголовка вместо ‹iosfwd› имеет огромное влияние на то, сколько строк компилятор должен создать при предварительной обработке файла. Это можно проверить с помощью простой команды:

cat test_class.hpp | g ++ -E -xc ++ - | туалет

Эта команда выводит test_class.hpp и передает его g ++, который затем выводит предварительно обработанный исходный код и отправляет его на стандартный вывод для wc для подсчета строк. С ‹iosfwd› предварительно обработанный файл состоит из 1229 строк, в то время как при прямом включении в ‹sstream› тот же номер - 41952. И это только в том случае, если у вас есть один тип потоков, используемых в классе. Какая экономия.

А вот то же изображение из моей первой части, чтобы получить фото на обложке для этой статьи (мне все еще, к сожалению, лень ...):

Если вам понравился рассказ, нажмите кнопку ❤ ниже (знаете ли вы, что можно дать больше одного хлопка в ладоши). Также, пожалуйста, поделитесь этой историей!

Обо мне

Я Хейкки Хеллгрен, эксперт по программному обеспечению и энтузиаст технологий, работаю в Электробит Автомотив. Меня интересуют создание программного обеспечения, инструменты, автоматическое тестирование и все новые интересные вещи, такие как искусственный интеллект и автономное вождение. Вы можете подписаться на меня в Medium и Twitter и зайти на мой сайт для получения дополнительной информации.