Предположим, что у нас есть два класса Foo и Bar. Мы можем объявить класс Foo и использовать его методы следующим образом:В чем разница между форвардом, объявляющим класс, и объявлением переменной класса?
#include"foo.h"
Foo foo
class Bar{
Bar(){
foo.method1();
}
}
И мы имеем опережающее объявление, которое стоит объявить класс Foo следующим образом:
#include"foo.h"
class Foo
class Bar{
Bar(){
}
}
Каковы основные различия между двумя декларациями, и когда предварительная декларация предпочтительнее обычной декларации?
Полезная ссылка: https://www.quora.com/What-exactly-is-the-difference-between-the-declaration-of-a-class-and-a-definition-of-a-class –
в вашем втором примере 'Foo' никогда не используется, поэтому я не понимаю ваш вопрос – bolov
Возможный дубликат [C++ - Forward декларация] (http://stackoverflow.com/questions/4757565/c-forward-declaration) – dkg