C++模板的要點

1.函數模板與普通函數的區別:html

普通函數能夠進行自動類型轉化,而函數模板不能夠。函數

舉個例子spa

//函數模板

template<class T>
void show(T  a,T b){
         cout<<a*b<<endl;
}

//執行

show(1,'a');//編譯器報錯
//普通函數

void show(int a,int b){
       cout<<a*b<<endl;
}

//執行

show(1,'a'); //編譯成功  執行後顯示97

 

雖然函數模板能夠自動識別類型,可是一旦識別以後,後面的T都必須替換成第一個類型,並且不能夠進行強制類型轉換。code

可是普通函數,雖然指定好了數據類型,可是能夠進行強制類型轉換htm

 

 

2.類模板和函數模板調用的區別blog

函數模板不須要顯式指定類型就能夠調用,可是類模板必須顯式指定數據類型才能夠調用內存

//假設定義了一個類模板 Person

Person<int> p(10);

//假設定義了一個函數模板 saying

saying a(10); //函數模板不須要顯式指定數據類型,由於能夠自動識別

 

3.基類爲模板類的派生類怎麼寫?get

必需要顯式指定基類的數據類型編譯器

//基類
template <class T>
class Foundation{
    T size;
public:
    Foundation(T s):(size(s));
}

//派生類
class Ki:public Foundation<int>{ //必需要顯式指定 否則編譯器不知道如何分配內存
public:    
  Ki(int a):Foundation(a);
}

 

4.類模板較爲規範的寫法io

一個類Person

應當在Person.h中定義類模板,聲明模板內函數。

而函數在Person.hpp中實現

 

5.類模板中的友元函數該如何寫?

https://www.cnblogs.com/kiik/p/how_to_coding_friend_function_in_cpp_template_class.html

相關文章
相關標籤/搜索