天天看點

類模闆遇上友元函數

#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成員副本