C++学习记事本

template显式实例化与隐式实例化

模板实例化都是在编译期完成的,不管是显式实例化还是隐式实例化。
区别是隐式实例化只有到编译器发现某个模板实例需要用到时,才会进行实例化。显式实例化可以提前告诉模板去为某个类型进行实例化,无论后面会不会用到它。
所以,显式实例化可以将模板的声明和定义分离,隐藏实现,前提是我们只会用到被显式实例化的几个类型。而隐式实例化不可以,如果分离,编译时会无法链接(因为找不到定义/实现)。
https://en.cppreference.com/w/cpp/language/class_template

typename使用规范

对于用于模板定义的依赖于模板参数的名称,只有在实例化的参数中存在这个类型名,或者这个名称前使用了typename关键字来修饰,编译器才会将该名称当成是类型。除了以上这两种情况,绝不会被当成是类型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章