最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++可變參數(shù)函數(shù)的實現(xiàn)

 更新時間:2020年04月01日 09:24:41   作者:嗨,人  
這篇文章主要介紹了C/C++可變參數(shù)函數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、變長參數(shù)函數(shù)

頭文件:#include <stdarg.h>

函數(shù)聲明

int add(int count, ...); 

函數(shù)定義

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;
}

函數(shù)調(diào)用

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

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

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

遞歸函數(shù)方式展開,模板推導的時候,一層層遞歸展開,最后到?jīng)]有參數(shù)時用定義的一般函數(shù)終止。

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函數(shù)遞歸調(diào)用的結尾。再測試一下

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來控制在哪里結束。

最后寫一個正經(jīng)的累加器:

#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

三、參考

關于可變參數(shù)類模板、右值引用和完美轉發(fā)的內(nèi)容可以參考這篇博客http://m.fzitv.net/article/95152.htm,有時間再研究下后面怎么做。

到此這篇關于C/C++可變參數(shù)函數(shù)的實現(xiàn)的文章就介紹到這了,更多相關C/C++可變參數(shù)函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文詳解如何在VS?Code上搭建C/C++開發(fā)環(huán)境

    一文詳解如何在VS?Code上搭建C/C++開發(fā)環(huán)境

    VSCode是由微軟開發(fā)的一款免費、開源、跨平臺的文本編輯器,它具有許多強大的功能,這篇文章主要給大家介紹了關于如何在VS?Code上搭建C/C++開發(fā)環(huán)境的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • C++利用SQLite實現(xiàn)命令行工具

    C++利用SQLite實現(xiàn)命令行工具

    這篇文章主要為大家詳細介紹了一個基于 C++、SQLite 和 Boost 庫的簡單交互式數(shù)據(jù)庫操作 Shell,該 Shell 允許用戶通過命令行輸入執(zhí)行各種數(shù)據(jù)庫操作,感興趣的可以了解下
    2023-11-11
  • C++ 初始化列表詳解及實例代碼

    C++ 初始化列表詳解及實例代碼

    這篇文章主要介紹了C++ 初始化列表詳解及實例代碼的相關資料,需要的朋友可以參考下
    2016-12-12
  • C++基本用法實踐之模板詳解

    C++基本用法實踐之模板詳解

    C++的模板是泛型編程思想的一種實現(xiàn),模板不光支持函數(shù)模板,還有類模板等,本文主要來和大家聊聊C++中模板的相關用法,需要的可以參考一下
    2023-07-07
  • C語言實現(xiàn)任何文件的加密解密功能

    C語言實現(xiàn)任何文件的加密解密功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)任何文件的加密解密功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C語言實現(xiàn)桶排序的方法示例

    C語言實現(xiàn)桶排序的方法示例

    這篇文章主要介紹了C語言實現(xiàn)桶排序的方法,簡單描述了桶排序的概念、原理并結合實例形式分析了C語言實現(xiàn)桶排序算法的具體操作技巧,需要的朋友可以參考下
    2018-01-01
  • C/C++字符串查找函數(shù)全面了解

    C/C++字符串查找函數(shù)全面了解

    下面小編就為大家?guī)硪黄狢/C++字符串查找函數(shù)全面了解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • GetChar緩存機制深入剖析

    GetChar緩存機制深入剖析

    以下是對GetChar緩存機制進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • 老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    下面小編就為大家?guī)硪黄仙U凜語言動態(tài)函數(shù)庫的制作和使用(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C語言 module_init函數(shù)與initcall案例詳解

    C語言 module_init函數(shù)與initcall案例詳解

    這篇文章主要介紹了C語言 module_init函數(shù)與initcall案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

历史| 云南省| 武强县| 墨玉县| 镇沅| 玉林市| 永善县| 和硕县| 民县| 安徽省| 永嘉县| 牡丹江市| 郁南县| 工布江达县| 甘肃省| 南丹县| 雅安市| 虹口区| 东台市| 宜州市| 四平市| 岳池县| 葫芦岛市| 罗平县| 唐河县| 佛学| 阿拉尔市| 丰台区| 龙海市| 密山市| 金乡县| 沙洋县| 永福县| 阿勒泰市| 广宗县| 永丰县| 余江县| 柘城县| 平度市| 宜昌市| 瑞安市|