Поделиться через


Pimpl для инкапсуляции времени компиляции (современный C++)

эта pimpl современный метод C++, чтобы скрывать реализацией, свернуть соединение и разделять интерфейсы. Pimpl коротким «для указателя на реализацию». Можно быть уже знакомы с понятием только знать его различными именами, является брандмауэра котов или Чешира компилятора.

Зачем использовать pimpl?

Описание является pimpl может повысить жизненного цикла разработки программного обеспечения.

  • Минимизация зависимостей компиляции.

  • Разделение и реализации интерфейса.

  • Переносимость.

Заголовок Pimpl

// my_class.h
class my_class {
   //  ... all public and protected stuff goes here ...
private:
   class impl; unique_ptr<impl> pimpl; // opaque type here
};

Эта pimpl избежать каскадов перестроения и хрупких макетов объекта. Он хорошо подходит для () является транзитивным популярных типов.

Реализация Pimpl

Определите класс impl в cpp-файле.

// my_class.cpp
class my_class::impl {  // defined privately here
  // ... all private data and functions: all of these
  //     can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
  // ... set impl values ... 
}

Рекомендации

Возможно, добавление поддержки не функцию специализации обмена.

См. также

Другие ресурсы

Возвращение к C++ (современный C++)

Справочник по языку C++

Справочник по стандартной библиотеке C++