[计算机科学经

2 using vc6vc71icl71 using dependent name typename

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: ; 或 Base<T>:: 進行修飾。為避免任何不確定性,可考慮在 templates 內對所有成員存取動作(member accesses)進行以㆖修飾。 5.3 Member Templates(成員模板) Class 的成員也可以是 templates:既可以是 nested class templates,也可以是 member function templates。讓我再次使用 Stack<> class templates 來展示這項技術的優點,並示範如何運用這種 技術。通常只有當兩個 stacks 型別相同,也就是當兩個 stacks 擁有相同型別的元素時,你才能 C++ Templates - The Complete Guide 5 46 高階基本技術 對它們相互賦值(assign),也就是將某個 stack 整體賦值給另㆒個。你不能把某種型別的 stack 賦值給另㆒種型別的 stack,即使這兩種型別之間可以隱式轉型: Stack<int> intStack1, intStack2; // stacks for ints Stack<float> floatStack; // stack for floats ... intStack1 = intStack2; // OK:兩個 stacks 擁有相同型別 floatStack = intStack1; // ERROR:兩個 stacks 型別不同 default assignment 運算子要求右兩邊擁有相同型別,而以㆖情況㆗,擁有不同型別元素的兩 個 stacks,其型別並不相同。 然而,只要把 assignment 運算子定義為㆒個 template,你就可以讓兩個「型別不同,但其元素 可隱式轉型」的 stacks 互相賦值。為完成此事,Stack<> 需要這樣的宣告: // basics/stack5decl.cpp template <typename T> class Stack {...
View Full Document

Ask a homework question - tutors are online