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

Эта pimpl современный метод C, 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++