2009-08-26 4 views

ответ

12

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

class CFoo; 
class CBar { 
    public: 
     CFoo* object; 
}; 

Это намек на компилятор C++, говоря это не урод, что имя типа используется без значения, даже если он hasn» t видел полное определение для CFoo.

+1

Почему бы просто не использовать вместо этого заголовочный файл, содержащий определение CFoo, зачем использовать этот метод? – user1084113

+2

Они также могут быть в заголовочных файлах; предположим, что CFoo относится к классу CBAR (круговая ссылка). Иногда вам понадобится форвардная декларация в вашем заголовке, потому что вы не можете полностью определить один класс, не зная, что существует другой класс. –

1
class CFoo; 

Есть только заявление о том, что класс существует; даже если вы еще не видели определение, вы все равно можете играть с (CFoo *) или (CFoo &), то есть указателями и ссылками на CFoo.

+0

Вы также можете определить функции, возвращающие CFoo (по значению). – Tom

+0

Действительно? Мне это кажется маловероятным, потому что для возврата по стоимости вам нужно знать, по крайней мере, размер CFoo. –

Смежные вопросы