您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++11包擴展舉例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++11包擴展舉例分析”吧!
簡單擴展
假設我們有下面的模板函數。
這是一個簡單的加法函數,將參數a,b,c的值相加。
另外有一個可變參數的模板函數sum,調用add函數。
光從形式上來看,兩個函數的簽名完全不同,但是程序可以正常執行。其原因就是發生了包擴展,編譯器根據add的需求將values包進行了擴展。包擴展的格式就是在包名后面加上三個小點。
考慮通過下面的代碼調用sum函數。
第一個實參1賦值給了形參t,values則包含了另外兩個實參2和3。values展開的結果就是2,3。也就是說,add(t, values...)等價于add(1, 2, 3)。
更進一步
在理解了簡單擴展的基礎上,看下面的代碼。
這是利用add函數計算平方和的模板函數。注意參數展開部分的寫法:(value*value)...
這里小括號的用法,...的位置都需要考慮。
感謝各位的閱讀,以上就是“C++11包擴展舉例分析”的內容了,經過本文的學習后,相信大家對C++11包擴展舉例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。