天天看點

非類型模闆參數

對于函數模闆與類模闆,模闆參數并不局限于類型,普通值也可以作為模闆參數。在基于類型參數的模闆中,你定義了一些具體的細節來加以确定代碼,直到代碼被調用時這些細節才被真正的确定。但是在這裡,我們面對的是這些細節是值,而不是類型,當要使用基于值的模闆時,必須顯式地指定這些值,才能夠對模闆進行執行個體化。

非類型的類模闆參數

建立類的頭檔案

實作代碼:

maxsize是新加入的第二個模闆參數,類型為int,它指定了數組最多可包含的棧元素的個數

同樣,我們可以為模闆參數指定預設值:

  非類型的函數模闆參數

你也可以為函數模闆定義非類型參數。例如:

借助于stl,可以傳遞這個函數模闆的執行個體化給集中的每一個元素,讓他們都增加一個整數值:

  非類型模闆參數的限制

非類型模闆參數是有限制的,通常而言,它們可以是常整數(包括枚舉值)或者指向外部連結對象的指針。

浮點數和類對象是不允許作為非類型模闆參數的:

  另外,你也不能使用全局指針作為模闆參數:

但是你可以這樣使用:

全局字元數組s由"hello"初始化,是一個外部連結對象