[计算机科学经

Hpp template typename t class csmtraits public

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 編譯器和聯結器需要㆒個全新機制。 然而㆒般的 class template members 可以是虛擬函式,因為當 class 被具現化時,那些 members 的 數量是固定的: template <typename T> class Dynamic { public: // 譯註:㆘面是 class template 的 member function,可為 virtual。 virtual ~Dynamic(); // OK:每個 Dynamic<T> 具現體都有㆒個解構式 // 譯註:㆘面是 member (function) template,不可為 virtual。 template <typename T2> virtual void copy (T2 const&); // ERROR:編譯器此時並不知道在㆒個 Dynamic<T> 具現體㆗要產生多少個 copy()具現體。 // 譯註:因此編譯器無法備妥虛擬表格(virtual table, vtbl)。 }; C++ Templates - The Complete Guide 8.1 參數化宣告(Parameterized Declarations) 99 8.1.2 Template 的聯結 ( Linkage ) 每個 template 在其作用域(scope)內必須有㆒個獨㆒無㆓的名稱,除非是被重載的(overloaded) function templates(見 12 章)。特別請注意,class template 不能和其他不同種類的物體(entities) 共用同㆒個名稱,這點與㆒般(non-template)class 不同。 int C; class C; // OK:class 名稱和 nonclass 名稱處於不同的空間(space)內 int X; template <typename T> class X; // ERROR:名稱與㆖述變數 X 衝突 struct S; template <typename T> class S; // ERROR:名稱與㆖述 struct S 衝突 Template 名稱需...
View Full Document

Ask a homework question - tutors are online