91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在C++項目中實現一個可變參數函數

發布時間:2021-03-17 15:24:56 來源:億速云 閱讀:119 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關怎么在C++項目中實現一個可變參數函數,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、變長參數函數

頭文件:#include <stdarg.h>

函數聲明

int add(int count, ...);

函數定義

int add(int count, ...)
{
 va_list va;
 va_start(va, count);
 int sum = 0;
 for (int i = 0; i < count; i++)
 sum += va_arg(va, int);
 va_end(va);
 return sum;
}

函數調用

int main()
{
 
 cout<<add(5, 1, 2, 3, 4, 5)<<endl;//輸出15
 return 0;
}

二、C++11的新特性,變長參數模板。

邊長參數模板相當于一個模板的遞歸展開模型,但是它不是遞歸的。使用的時候,要定義一個“遞歸”的出口,然后定義一系列的操作,操作的是以“遞歸”的方式進行的。

遞歸函數方式展開,模板推導的時候,一層層遞歸展開,最后到沒有參數時用定義的一般函數終止。

void test()
 {
 cout << "test()" << endl;
 }

 template < class T, class... Args>
 void test(T first, Args... args)
 {
   cout << typeid(T).name() << " " << first <<endl;
   test(args...);
 }
test<int, int, long>(1, 2, 3L);
//輸出
int 1
int 2
long 3
test()

嗯?第一個test()應該是作為test函數遞歸調用的結尾。再測試一下

template < class T>
 void test(const T &t)
 {
 cout << "test()"<<t << endl;
 }

 template < class T, class... Args>
 void test(T first, Args... args)
 {
   cout << typeid(T).name() << " " << first <<endl;
   test(args...);
 }
 //輸出
int 1
int 2
test()3

這。。。。好像是通過第一個test來控制在哪里結束。

最后寫一個正經的累加器:

#include <iostream>
#include <stdarg.h>
using namespace std;
template<typename T>
int add(const T& t)
{
 return t;
}
template<typename T, typename ...Args>
int add(const T& t, const Args&... args) 
{
 return t + add(args...);
}

int main() {
 auto res = add(2, 3, 3);
 std::cout << res << std::endl;
 system("pause");
 return 0;
}
//輸出結果 8

上述就是小編為大家分享的怎么在C++項目中實現一個可變參數函數了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

西华县| 慈利县| 合江县| 乌兰县| 务川| 芜湖市| 九江市| 阜平县| 锦屏县| 武强县| 老河口市| 镇坪县| 中西区| 太湖县| 临沂市| 衡南县| 会昌县| 潮安县| 扶沟县| 永登县| 南乐县| 榆树市| 长海县| 彭阳县| 汾西县| 博湖县| 思茅市| 平果县| 井冈山市| 淮北市| 大港区| 龙陵县| 长葛市| 图木舒克市| 南溪县| 通辽市| 遂宁市| 馆陶县| 潍坊市| 阆中市| 基隆市|