溫馨提示×

C++可變參數(shù)模板怎么實現(xiàn)

c++
小樊
81
2024-11-09 09:04:37
欄目: 編程語言

C++的可變參數(shù)模板允許你創(chuàng)建接受任意數(shù)量參數(shù)的函數(shù)或類。為了實現(xiàn)可變參數(shù)模板,你需要使用兩個C++11特性:參數(shù)包(parameter pack)和展開表達式(variadic expansion)。下面是一個簡單的示例,展示了如何使用可變參數(shù)模板實現(xiàn)一個函數(shù),該函數(shù)可以計算其參數(shù)的和。

#include <iostream>

// 定義一個可變參數(shù)模板函數(shù),用于計算參數(shù)的和
template <typename... Args>
auto sum(Args... args) -> decltype(args...) {
    return (... + args);
}

int main() {
    // 使用可變參數(shù)模板函數(shù)計算參數(shù)的和
    std::cout << "Sum of 1, 2, and 3: " << sum(1, 2, 3) << std::endl;
    std::cout << "Sum of 4, 5, 6, and 7: " << sum(4, 5, 6, 7) << std::endl;

    return 0;
}

在這個示例中,我們定義了一個名為sum的函數(shù)模板,它接受任意數(shù)量的參數(shù)。我們使用typename... Args表示參數(shù)包,其中Args是一個可變參數(shù)類型列表。decltype(args...)表示返回類型,它根據(jù)傳遞給函數(shù)的實際參數(shù)類型推斷出來。

在函數(shù)體中,我們使用展開表達式(... + args)將參數(shù)包中的所有參數(shù)相加。這個表達式會將參數(shù)包中的每個參數(shù)依次添加到前面的參數(shù)上,直到最后一個參數(shù)。

main函數(shù)中,我們調(diào)用sum函數(shù)并傳遞不同數(shù)量的參數(shù),以演示可變參數(shù)模板的用法。

0