標頭檔案:#include
函式宣告
int
add(
int count,..
.);
函式定義
int
add(
int count,..
.)
函式呼叫
int
main()
邊長引數模板相當於乙個模板的遞迴展開模型,但是它不是遞迴的。使用的時候,要定義乙個「遞迴」的出口,然後定義一系列的操作,操作的是以「遞迴」的方式進行的。
遞迴函式方式展開,模板推導的時候,一層層遞迴展開,最後到沒有引數時用定義的一般函式終止。
void
test()
template
<
classt,
class..
. args>
void
test
(t first, args.
.. args)
test<
int,
int,
long
>(1
,2,3l
);//輸出
int1
int2
long
3test
()
嗯?第乙個test()應該是作為test函式遞迴呼叫的結尾。再測試一下
template
<
class
t>
void
test
(const t &t)
template
<
classt,
class..
. args>
void
test
(t first, args.
.. args)
//輸出
int1
int2
test()
3
這。。。。好像是通過第乙個test來控制在**結束。
最後寫乙個正經的累加器:
#include
#include
using
namespace std;
template
<
typename t>
intadd
(const t& t)
template
<
typename t,
typename..
.args>
intadd
(const t& t,
const args&..
. args)
intmain()
//輸出結果 8
關於可變引數類模板、右值引用和完美**的內容可以參考這篇部落格有時間再研究下後面怎麼做。 C C 可變引數函式
可變引數的函式,即函式的引數個數和引數型別不完全確定的函式。這類函式最常見的就是printf scanf函式。在c c 中,為了通知編譯器函式有可變引數,必須以三個點結束該函式的宣告。例如 printf函式的宣告 int printf const char format,scanf函式宣告 int ...
可變引數的c c 函式
最近在寫遊戲的時候看到書上寫了個virtual void displaytext int id,long x,long y,unsigned long color,char text,0 當我看到這個函式時,我和小夥伴們都驚呆啦,我的娘,這是神馬函式,還帶省略號的,難道是書上寫錯了?然後我抱著試試看...
C C 可變引數
函式 使用va list巨集組解決變參問題 1 首先定義va list型的變數,這個變數是指向引數的指標。2 然後用va start巨集初始化剛定義的va list變數,這個巨集的第二個引數是 第乙個可變引數的前乙個引數 3 再用va arg得到可變引數,第二個引數是 可變引數 的型別。4 最後用v...