2011-03-17 16 views
2

一個類是一個類型。它的名字變成 範圍內的類名(9.1)。該程序是否正確 - >使用C++ 0x N3242

class-name: 
      identifier 
      simple-template-id 

類SPECI網絡ER S和闡述型SPECI網絡ER S(7.1.6.3) 被用來製造類的名字。一個類的對象由成員和基類對象的序列(可能是空的)組成。

class-specifier: 
      class-head { member-specificationopt } 
    class-head: 
      class-key attribute-specifier-seqopt 
    class-head-name 
    class-virt-specifier-seqopt 
    base-clauseopt 
    class-key attribute-specifier-seqopt 
    base-clauseopt 

     class-head-name: 
      nested-name-specifieropt class-name 
     class-virt-specifier-seq: 
      class-virt-specifier 
      class-virt-specifier-seq class-virt-specifier 
     class-virt-specifier: 
      final 
      explicit 
     class-key: 
      class 
      struct 
      union 

一個類的virt-SPECI網絡ER-SEQ應包含每個 類的virt-SPECI網絡ER的 最多一個。

class-speci fi er的類頭忽略 class-head-name定義了一個未命名的 類。 [注意:因此 的無名類不能是最終的或明確的。 - 結束 注]

這裏:他們用 - >最後,明確作爲類的virt-SPECI網絡ER:

本應我使用這樣的:

1) struct A{ void f();}; 
    struct B final : A{void f();}; 
    int main() { return 0; } 
2) struct A{ void f();}; 
    struct B explicit : A{void f();}; 
    int main() { return 0; } 
    etc... 

可以在任何一個告訴正確的用法...如果它是錯誤的

AND:請告訴我哪個編譯器將支持此功能(我知道VC++,GCC 4.6.0支持許多功能) 但海灣合作委員會不支持上述功能..請建議我該怎麼做來檢查這個?

回答