聊聊模板
看下面的例子,
void printEx(){}
template <typename T, typename... Types>
void printEx(const T& firstArg, const Types... args) {
std::cout << firstArg << std::endl;
printEx(args...);
}
void testFun {
printEx(1, "abc", 100, 1.5f, 'c', new char [5]);
}
我們檢視下它編譯後的情況如下:
可以看到,這個模板函式生成了各個版本的呼叫,這個就是模板的實質,當編譯的時候會根據原始碼的具體實現情況,生成實際的函式呼叫程式碼。
在本例中,我們的模板是不固定引數的,其依賴於printEx(1, "abc", 100, 1.5f, 'c', new char [5]);
而該函式必須實現下面的版本:
printEx(int, const char*, int, float, char, char*), 在這個實現內部會繼續呼叫
printEx(const char*, int, float, char, char*), 每次遞迴減少一個引數
最終以printEx() 結束
相關文章
- 聊聊Play框架的模板框架
- 聊聊elasticsearch7.8的模板和動態對映Elasticsearch
- 聊聊如何實現一個帶冪等模板的Kafka消費者Kafka
- Django 模板引擎以及模板Django
- 聊聊JedisFactory
- 聊聊ChatGPTChatGPT
- 聊聊 NoSQLSQL
- 聊聊 VaporVapor
- 聊聊 ReactReact
- 聊聊ContextContext
- 聊聊JWTJWT
- 聊聊ViewControllerViewController
- 模板
- 聊聊Spring核心Spring
- 聊聊 Redis StreamRedis
- 聊聊長膠
- 聊聊SWIM ProtocolSWIMProtocol
- 聊聊架構架構
- 聊聊 clean code
- 聊聊Docker映象Docker
- 聊聊 rel=noopenerOOP
- 好好聊聊原型原型
- WordPress模板層次15:歸檔模板
- WordPress模板層次01:模板檔案
- WordPress模板層次10:主頁模板
- 模板引數,模板分離編譯編譯
- GESP模板
- tarjan[模板]
- 模板合集
- 模板庫
- CMD模板
- cmake 模板
- KMP模板KMP
- Exgcd 模板GC
- 模板匹配
- 模板模式模式
- RMQ模板MQ
- BFS(模板)