2010-03-05 1 views
1

인라인 클래스 정의와 객체 초기화 : 전에 변수를 definining의 위의 방법을 보지 못했다C++ 난 그냥 다음 코드 건너 한

#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++ 표준이라고 부르는 것은 무엇입니까?

감사

타 라스

답변

3

그것은 그런에 꽤 class (기본값 대신 privatepublic 것을 제외하고는 완벽하게 동등하거나 struct 등)를 정의하고 해당 유형의 변수를 선언하는 표준 (또는 포인터입니다 변수 등) - C에서 괜찮 았는데 (struct을 사용했지만, 이미 C++의 class에 대한 공개 대 개인용 저장은 struct과 동일 함) 및 C++은 (ISO-1989) C와의 상위 호환성을 대부분 유지합니다. 특별한 이름으로 불리는 것을 결코 들어 보지 못했습니다.

+0

이 경우 클래스의 이름을 지정해야합니까 (즉, C++에서 허용되는 익명 클래스입니까?)? 그리고 이름이 붙어 있기 때문에 다른'Foo' 객체를 생성 할 수 있습니까? –

+1

... 곧 ISO C99와 호환됩니다. 비록 합법적이라고하더라도,이 사용법은 관용적 인 C++에서는 매우 드물다. –

+3

@STingRaySC : 아니요, 익명의 클래스는 괜찮습니다. 그렇습니다. 다른 클래스도 만들 수 있습니다. 사실 익명 인 경우에도 두 개를 생성 할 수 있습니다 :'struct {...} foo1, foo2;'. – Potatoswatter