2010-03-05 40 views
1

我剛剛碰到下面的代碼: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; 
} 

我還沒有看到definining變量的上述方法之前 - 類定義與變量進行在線定義。它讓我想起了Java中的匿名類。這是什麼叫的,它是在C++標準?

由於

塔拉斯

回答

3

這是相當標準來定義class(或struct,除了默認是public代替private完全當量)和聲明其類型的變量(或指針這樣的變量等) - 在C(是確定與struct,但我已經講過了C++的class,節省公共VS私,是一回事struct)和C++大多向上保持與(ISO-1989)C.兼容性從來沒有聽說過任何特殊名字。

+0

是否有必要爲類在這種情況下,被命名爲(即,被匿名類用C允許++)?而且,既然它被命名了,你還可以創建其他'Foo'對象嗎? – 2010-03-05 04:38:11

+1

...即將與ISO C99兼容。不過,我應該補充一點,即使它是合法的,這種用法在習慣C++中也很少見。 –

+3

@STingRaySC:沒有,匿名類都很好,是的,你可以創建其他人。事實上,即使它是匿名的,也可以創建兩個:'struct {...} foo1,foo2;'。 – Potatoswatter