C++ 模板(格式)筆記

參考:

C++模板使用介紹 http://www.kuqin.com/language/20090405/44193.html

C++ STL 學習 for_each 與仿函數 http://blog.chinaunix.net/uid-20384806-id-1954377.html


學習一項技術,就先要熟悉基本語法格式,對於C++我是半路出家。它和C不同的那些關鍵字,真的讓人很頭暈。


1.explicit constructor(); 是對於構造函數的修飾符,說明只支持顯式轉換

關於顯式和隱式轉換 http://www.diybl.com/course/3_program/c++/cppjs/20090302/156731.html

隱式轉換有時會造成不確定的類型錯誤。


2.一個較簡單的模板函數

#include <iostream>

using namespace std;

//聲明一個函數模版,用來比較輸入的兩個相同數據類型的參數的大小

//T可以被任何字母或者數字代替。

template <class T>

T min(T x,T y)

return(x<y)?x:y;}

void main( )

{

     int n1=2,n2=10;

     double d1=1.5,d2=5.6;

     cout<< "較小整數:"<<min(n1,n2)<<endl;

     cout<< "較小實數:"<<min(d1,d2)<<endl;

     system("PAUSE");

}


3.有模板函數,當然也有模板類。模板類包括類的構造、類體的定義、類的使用三部分

// ClassTemplate.h

#ifndef ClassTemplate_HH

#define ClassTemplate_HH

template<typename T1,typename T2>

class myClass{

private:

     T1 I;

     T2 J;

public:

     myClass(T1 a, T2 b);//Constructor

     void show();

};

//這是構造函數

template <typename T1,typename T2>

myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}

//這是void show();

template <typename T1,typename T2>

void myClass<T1,T2>::show()

{

     cout<<"I="<<I<<", J="<<J<<endl;

}

#endif

//類體的定義



//test.cpp

#include <iostream>

#include "ClassTemplate.h"

using namespace std;

void main()

{

     myClass<int,int> class1(3,5);//模板類中函數的使用方法,先指明類型,再傳入參數

     class1.show();

     system("PAUSE");

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章