Forráskód Böngészése

feat: 添加可变参数模板的基本使用

liucong5 7 hónapja
szülő
commit
5e595fafd7
1 módosított fájl, 29 hozzáadás és 0 törlés
  1. 29 0
      cpp/模板/README.md

+ 29 - 0
cpp/模板/README.md

@@ -850,4 +850,33 @@ C<sizeof(int) + 4, (sizeof(int) > 4)> c; // OK 用括号抱起来
 
 ## 变参模板
 
+```cpp
+template<typename T>
+void print(T t)
+{
+    std::cout << typeid(T).name() << " " << t<< std::endl;
+}
+
+template<typename T, typename... Types>
+void print(T firstArg, Types... args)
+{
+    print(firstArg);
+    print(args...);
+}
+
+int main() {
+    print(1, 2, "3", '4', 5.0);
+    return 0;
+}
+```
+
+> 当 `print('4', 5.0)` 的时候先触发 `print('4')` 再触发 `print(5.0)`,跳出了递归循环
+
+- 使用 `typename...` 表示多个模板类型
+- 使用 `Types...` 表示接受多个输入参数
+- 使用 `args...` 来拆分多个输入参数
+
+另外,这里 `print` 出现了**变参**和**非变参**模板的**重载**
+
+