Прямое объявление include поверх объявления include (ClassFwd.h + Class.h)

В Effective C ++ (3-е издание) Скотт Мейерс в пункте 31 предлагает, чтобы классы помимо своих классические файлы объявлений (.h) и определений (.cpp), включаемый файл прямого объявления (fwd.h), который может использовать класс, которому не требуется полное определение, вместо прямого объявления себя.

для этого, но я действительно не считаю это жизнеспособным вариантом ... Это кажется очень сложным в обслуживании, довольно излишним и вряд ли необходимым.

Однако я могу увидеть его использование для шаблонных предварительных объявлений, которые являются довольно тяжеловесен. Но для простых классов? Кажется, что это сложно поддерживать и создаст много почти пустых включаемых файлов, которые обслуживают версию малая цель ... стоит ли это хлопот?

Вот пример:

// Class.h
class Class
{
    Class();
    ~Class();
};

// ClassFwd.h
class Class;

// Class.cpp
Class::Class()
{
}

Class::~Class()
{
}

Мой вопрос :

Что вы, ребята, думаете? Если это хорошая практика?

ПРИМЕЧАНИЕ Меня больше всего интересуют аргументы ЗА эту практику, чтобы увидеть, не упустил ли я что-то, что заставило бы меня согласиться со Скоттом Мейерсом.

11
задан Geeho 14 October 2010 в 16:03
поделиться