函數指針,指針函數,數組指針,指針數組 區分

what /why/how數組

 這些怎麼區分:函數

函數指針:重點在指針,表示它是一個指針,它指向的是一個函數。eg: int (*fun)();指針

指針函數:重點在函數,表示它是一個函數,它的返回值是指針。 eg: int*  fun();ci

 

數組指針:重點在指針,表示它是一個指針,它指向的是一個數組。int (*fun)[8];編譯器

指針數組:重點在數組,表示它是一個數組,它包含的元素是指針 itn*  fun[8];it


 

類模板(class   template)  - 模板類(template   class) 區分:io

類模板:重點在模板,表示它是一個模板,專門用於產生類的模子。編譯

template <tempname T>function

class   Vector模板

{

.....................................

}

使用這個Vector模板就能夠產生不少的class(類),Vector <int> 、Vector <char> 、Vector <   Vector <int>   >。

模板類: 重點在類,表示的是由一個模板生成而來的類。

例子:上面的Vector <int> 、Vector <char> 、……全是模板類。 

 

函數模板(function   template)——模板函數(template   function) 

函數模板的重點是模板。表示的是一個模板,專門用來生產函數。

eg:

template <tempname T>

void   fun(T   a) 

            … 

在運用的時候,能夠顯式(explicitly)生產模板函數,fun(int) ,fun(double) , fun(shape*)。

也能夠在使用的過程當中由編譯器進行模板參數推導,幫你隱式(implicitly)生成。

fun(1)          //隱式的生成fun(int)

func(1.2)    //隱式的生成fun(double)

func('a')    //隱式的生成fun(char)

Shape*  ps = new  ch;

 fun(ps);    //隱式的生成fun(Shape*)

 

模板函數:重點在函數,表示的是由一個模板生成而來的函數。

面顯式(explicitly)或者隱式(implicitly)生成的fun <int> 、fun <Shape*> ……都是模板函數。

 


 

從文章的討論中,能夠看到,名字是很是重要的,若是對名字的使用不恰當的話,會引發不少的麻煩和誤解。有時候仍是須要付出必定的代價。 

相關文章
相關標籤/搜索