亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

南昌县| 苏尼特右旗| 额敏县| 将乐县| 冷水江市| 安图县| 南通市| 泉州市| 达拉特旗| 会同县| 阜南县| 高唐县| 政和县| 张北县| 普安县| 内乡县| 息烽县| 南宫市| 芦山县| 同仁县| 沭阳县| 庐江县| 同江市| 茌平县| 广饶县| 祁东县| 洪湖市| 靖安县| 兴和县| 壶关县| 六枝特区| 芷江| 丹棱县| 修水县| 德钦县| 罗田县| 和林格尔县| 静乐县| 萨嘎县| 张家港市| 马关县|