Определение встроенного класса C ++ и инициализация объекта - PullRequest
1 голос
/ 05 марта 2010

Я только что наткнулся на следующий код:

#include <iostream>

static class Foo
{
public:
    Foo()
    {
        std::cout << "HELLO" << std::endl;
    }

    void foo()
    {
        std::cout << "in foo" << std::endl;
    }

}
    blah;

int main()
{
    std::cout << "exiting" << std::endl;
    blah.foo();
    return 0;
}

Я не видел вышеописанного метода определения переменной раньше - определение класса выполняется в соответствии с определением переменной. Это напоминает мне анонимные классы в Java. Как это называется и соответствует ли это стандарту C ++?

Спасибо

Тарас

1 Ответ

3 голосов
/ 05 марта 2010

Вполне стандартно определить class (или struct, полностью эквивалентный, за исключением того, что по умолчанию public вместо private) и объявить переменную ее типа (или указатель на такую ​​переменную и т. Д.) ) - все было в порядке в C (с struct, но, как я уже упоминал, class в C ++, за исключением общедоступного и частного, то же самое, что и struct), а C ++ в основном поддерживает восходящую совместимость с (ISO-1989 ) C. Никогда не слышал, чтобы он назывался каким-то особым именем.

...