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*> ……都是模板函數。
從文章的討論中,能夠看到,名字是很是重要的,若是對名字的使用不恰當的話,會引發不少的麻煩和誤解。有時候仍是須要付出必定的代價。