程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第16章 模板與泛型編程(8)

第16章 模板與泛型編程(8)

編輯:C++入門知識

16.4.1 類模板成員函數

類模板成員函數的定義具有如下形式:

必須以關鍵字template開頭,後接類的模板形參表。

必須指出它是哪個類的成員。

類名必須包含其模板形參。

1.destroy函數

template<class Type> void Queue<Type>::destroy(){ 
    while(!empty()) 
        pop(); 

template<class Type> void Queue<Type>::destroy(){
 while(!empty())
  pop();
}2. pop函數

template<class Type> void Queue<Type>::pop() 

    QueueItem<Type> p=head; 
    this->head=this->head->next; 
    delete p; 

template<class Type> void Queue<Type>::pop()
{
 QueueItem<Type> p=head;
 this->head=this->head->next;
 delete p;
}3. push函數

template<class Type> void Queue<Type>::push(const Type &p) 

    QueueItem<Type> *pt=new QueueItem<Type>(p); 
    if(empty()) 
        head=tail=pt; 
    else{ 
        this->tail->next=pt; 
        tail=pt; 
    } 

template<class Type> void Queue<Type>::push(const Type &p)
{
 QueueItem<Type> *pt=new QueueItem<Type>(p);
 if(empty())
  head=tail=pt;
 else{
  this->tail->next=pt;
  tail=pt;
 }
}4. copy_elems函數

template <class Type> 
void Queue<Type>::copy_elems(const Queue &orig){ 
    for(QueueItem<Type> *pt=orig.head;pt==0;pt=pt->next) 
    { 
        push(pt->item); 
    } 

template <class Type>
void Queue<Type>::copy_elems(const Queue &orig){
 for(QueueItem<Type> *pt=orig.head;pt==0;pt=pt->next)
 {
  push(pt->item);
 }
}5. 類模板成員函數的實例化

類模板的成員函數本身也是函數模板。像其他任何函數模板一樣,需要使用類模板的成員函數產生該成員的實例化。與其他函數模板不同的是,在實例化類模板成員函數的時候,編譯器不執行模板實參推斷,相反,類模板成員函數的模板形參由調用該函數的對象的類型確定。

6. 何時實例化類和成員

類模板的成員函數只有為程序所用才進行實例化。如果某函數從未使用,則不會實例化該成員函數。

 摘自 xufei96的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved