Задать вопрос
Daniro_San
@Daniro_San
Программист

Конструкция «class{}Name;» вместо «class Name{};»?

Я всегда создавал классы и структуры так:
class ClassName
{
   //...
};

Недавно заметил в чужом коде интересную (для меня по крайней мере) конструкцию:
class
{
  //...
}ClassName;

Которая работает подобно статическому классу в C#, или как класс в C++, где все члены объявлены статическими. Экземпляры естественно не создаются.
Меня охватил жуткий интерес.
Гугл ничего не дал.
До сего дня мне не было известно о существовании статических классов в C++.
У Страуструпа тоже ничего нет.
Кто нибудь может досконально разъяснить мне эту фичу?
  • Вопрос задан
  • 405 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Olej
@Olej
инженер, программист, преподаватель
class ClassName {
   //...
};

- создаёт описание класса, как тип, который вы можете в дальнейшем использовать; никакие объекты в коде при этом не создаются.
class {
  //...
} ClassName;

- создаёт описание структуры анонимного (не именованного) класса и тут же создаёт объект с именем ClassName (поэтому имя очень неудачное, уместно было бы ObjName); поскольку класс не имеет имени, вы больше не сможете создать объектов такого класса ... разве что так:
class {
  //...
} Obj1, Obj2, Obj3, ...;
Ответ написан
Комментировать
@KaminskyIlya
Если я правильно понял ваш вопрос, то конструкция { ... } ClassName создаст нам объект класса анонимного класса, а конструкция: { ... } StructName - соответственно переменную с анонимной структурой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы