#include <iostream> using namespace std; template<class T> class Complex { public: Complex( T r =0, T i =0 ); Complex(T a) { Real = a ; Image = 0 ; } void print() const; friend Complex<T>operator+(Complex<T>&c1,Complex<T>&c2) { T r = c1.Real + c2.Real ; T i = c1.Image+c2.Image ; return Complex<T>( r, i ) ; } //friend Complex operator- ( const Complex<T> & c1, const Complex<T> & c2 ); //friend Complex operator- ( const Complex<T> & c ); private: T Real, Image ; }; template<class T> Complex<T>::Complex( T r, T i ) { Real = r ; Image = i ; } // template<class T> // Complex<T>operator+(Complex<T>&c1,Complex<T>&c2) // { // T r = c1.Real + c2.Real ; T i = c1.Image+c2.Image ; // return Complex<T>( r, i ) ; // } template<typename T> void Complex<T>::print()const { cout << '(' << Real << " , " << Image << ')' << endl; } void main61() { Complex<int>c1(1, 2); Complex<int>c2(3, 4); Complex<int>c3 = c1 + c2; c3.print(); system("pause"); } |
類模闆遇上static |
1 從類模闆執行個體化的每個模闆類都有自己的模闆資料成員,該模闆類所有對象每一類共享一個static成員(所有相同類型的對象共享同一個static) 2 和所有非模闆類的static資料成員一樣,模闆類的static資料成員也應在檔案範圍内定義和初始化 3 每個模闆類有自己的類模闆的static成員副本 |