В чем разница между такими объявлениями объекта класса?

Допустим, есть два класса – базовый и производный. Я могу объявить объект базового класса как class A object1 и A object2


В чем разница между такими объявлениями ( не считая того, что это два разных объекта)?

    class A 
{
    //...
};

class B : public A
{
private:
  
    class A object1;

    A object2;

    //...
};

Ответы (1 шт):

Автор решения: Qwertiy

Ни в чём. Совместимость со структурами, а там - с кодом на Си.

Впрочем, в некоторых случаях использование ключевого слова class позволяет не объявлять данный класс выше в коде: tio.run

class B { class A* a; };
int main() { B *b; }

Если здесь убрать слово class, то будет ошибка компиляции: tio.run

class B { A* a; };
int main() { B *b; } 
.code.tio.cpp:1:11: error: ‘A’ does not name a type
 class B { A* a; };
           ^

Придётся его объявлять отдельно: tio.run

class A;
class B { A* a; };
int main() { B *b; }
→ Ссылка