首页 / C++ / 《C++ Templates》模板术语
《C++ Templates》模板术语
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了《C++ Templates》模板术语,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1439字,纯文字阅读大概需要3分钟。
内容图文
关于类模板和模板类得区分问题:
个人认为主要是针对于翻译的相关问题:即 class template 和 template class的相关问题;
class template“类模板”主要是针对于参数化的类模板描述,即最初的某个类类型的模板定义;
template class“模板类”主要是针对于模板实例化的类,即对某个模板进行实例化的结果,抑或是具有template-id的类;
函数模板/模板函数,成员函数模板/模板成员函数的关系也类似于此;
关于模板特化的问题:
之前对模板特化有一个误解,一直以为其是针对于模板实例化而进行特化,直到看到书上的描述很疑惑,上网检索才知道是其实是针对于模板类的重载。
例如,对于全特化,有下述形式:
#include<iostream> #include<stdlib.h> #include<string> using namespace std; template <typename T, typename U> class myclass { public: T a; U b; myclass(T v, U u) :a(v), b(u) {}; void output() { cout << "this is orgin template" << endl; } }; template <> class myclass<string, float> { public: string a; float b; myclass(string v, float u) :a(v), b(u) {}; void output() { cout << "this is special template" << endl; } }; int main() { string a = "213"; myclass<string,float> m(a, 5.5); m.output(); myclass<int, int> n(1, 1); n.output(); system("pause"); return 0; }
从上述描述可以看出来,针对于myclass不同参数类型,output()生成的结果是不一样的;
因此,特化可以看作是针对于类模板的一种重载,不同的模板参数形式可以有不同的定义;
关于模板参数、模板实参、template-id的问题:
模板参数:即模板定义尖括号给出的类型,如下图所示;
模板实参:即实际使用时候给出的类型,template-id指的就是所有的模板实参;
内容总结
以上是互联网集市为您收集整理的《C++ Templates》模板术语全部内容,希望文章能够帮你解决《C++ Templates》模板术语所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。