类模板函数使用时实例化说明
来源:互联网 发布:安卓的内存优化 编辑:程序博客网 时间:2024/06/06 17:47
这个规则的一个有意思的结果就是:如果传递的类型仅使唤部分类成员函数合法,只要调用不到,不影响类模板使用。
以下代码是个展示例子
template<typename _T>class Tpl{public: void fun1(_T o) { char data[o]; cout << sizeof(data) << endl; } void fun2(_T o) { cout << o.size() << endl; }};int main(int argc, char* argv[]){ Tpl<int> t1; t1.fun1(3); //t1.fun2(3); //非法,但不影响模板实例化 Tpl<string> t2; //t2.fun1("abcdefg"); //非法,但不影响模板实例化 t2.fun2("abcdefg"); return 0;}
如果这个效果不是自己所希望的,则可以显示实例化,显示实例化会实例化所有成员,检查非法
template class Tpl<int>;template class Tpl<string>;
源文件是独立编译的,每一次实例化都可能产生重复的实例类,这可能是难以接受的,解决办法是声明为外部定义,这样遇到模板使用时,不会实例化,而是链接外部,确保存在一次定义,否则会报链接错误
extern template class Tpl<int>;extern template class Tpl<string>;
阅读全文
0 0
- 类模板函数使用时实例化说明
- c++ 模板函数,类模板,仿函数使用实例代码
- 类模板成员函数的实例化
- 函数模板和类模板的实例化和具体化
- 函数模板和类模板的实例化和具体化
- 函数模板和类模板的实例化和具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- c++函数模板和类模板实例
- 模板函数,模板函数重载,显示具体化模板,实例化
- C++primer学习:类模板(1):函数模板,模板参数,实例化
- 函数模板的说明
- 模板函数与函数模板 类模板和模板的说明
- 简单类模板实例化_默认构造函数
- AndroidStudio GsonFormat插件的介绍及集成使用
- vs2013 + QT组件开发串口程序
- [hihocoder1526]序列的值
- Effective C++第二章-构造,析构,赋值 -2
- Spring boot +Quartz +mongodb的分布式定时任务详解
- 类模板函数使用时实例化说明
- Logstash的KV模式自动将数字转换成整数
- 循环链表
- 手机号码,邮箱地址,正则表达式
- Volley自定义一个Request
- 卸载EOS Studio上SVN插件操作过程
- sql统计分组的组数
- 238. Product of Array Except Self
- php在linux上解析word文档