#include<iostream>
//1. 标准模板类。
template<typename T1, typename T2>
class MyClass {
public:
MyClass(){
std::cout<<" type 1. \n";
}
};
//2. 两个模板参数具有相同类型的部分特化类。
template<typename T>
class MyClass<T,T> {
public:
MyClass(){
std::cout<<" type 2. \n";
}
};
//3. 第二个类型参数是int
template<typename T>
class MyClass<T,int> {
public:
MyClass(){
std::cout<<" type 3. \n";
}
};
//4. 两个模板参数都是指针。
template<typename T1,typename T2>
class MyClass<T1*,T2*> {
public:
MyClass(){
std::cout<<" type 4. \n";
}
};
//5. 两个模板参数都是相同类型的指针。
template<typename T>
class MyClass<T*,T*> {
public:
MyClass(){
std::cout<<" type 5. \n";
}
};
//6. 调用示例代码。
int main() {
MyClass<int,float> c1; //调用MyClass<T1,T2>
MyClass<float,float> c2; //调用MyClass<T,T>
MyClass<float,int> c3; //调用MyClass<T,int>
MyClass<int*,float*> c4; //调用MyClass<T1*,T2*>
MyClass<int*,int*> c5; //调用MyClass<T*,T*>
MyClass<int,int> c6; // 调用MyClass<T,T> or 调用MyClass<T,int> , 报错:[Error] ambiguous class template instantiation for 'class MyClass<int, int>'
return 0;
}
分享到:
相关推荐
泛型容器的设计实现大多只是存储了类型的单个对象,而没有存储类型的多个对象,如果有这样特定的需求,容器内的元素要求都是某个类型的多个对象,那么这时就可以考虑用模板类的数组特化来实现了
模板的 主版本模板类、全特化、偏特化
说起C++的模板及模板特化, 相信很多人都很熟悉,但是说到模板特化的几种类型, 相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一 是特化为绝对类型; 二是特化为引用,指针类型;...
模板特化有时也称之为模板的具体化,分别有函数模板特化和类模板特化。 1.2函数模板特化 函数模板特化是在一个统一的函数模板不能在所有类型实例下正常工作时,需要定义类型参数在实例化为特定类型时函数模板的特定...
主要介绍了C++ 类模板、函数模板全特化、偏特化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C++模板类型题型,更全面,也可以更从中了解模板的运用与技术。
在这种情况下,如果全部重写该模板类的所有成员函数,不但会增加工作量,也不利于代码的维护。 例如下面的类模板A,只有在模板参数是char*时才需要特化成员函数func(),但其他的成员函数都不需要特化: 1 ...
编译环境: Windows 7 Service Pack 1 C++ Builder Embarcadero RAD Studio XE Version 15.0.3890.34076 代码参考: 余文溪的《C++ STL --数据结构与算法实现》原书代码为控制台。 这里用 C++ Builder代码演示
实验1:类模板的特化 实验2:特化的深入理解:函数模板的完全特化 实验1:类模板的特化 #include #include using namespace std; template class Test { public: void add(T1 a, T2 b) { cout << void...
我们知道在C++模板编程中如果我们特化或是偏特化某个模板类, 我们需要重写整个模板类中的所有函数, 但是这些代码通常是非常相似的, 甚至在某些情况下可能只有一两个函数会不一样,其他函数都是一样的。...
C++模板学习记录 模板定义 模板使用 类模板 函数模板 特化模板 编译器
但是显式特化的意思是:当一类东西中出了一渣滓的时候,为了对外接口的统一,或者说是为了家丑不可外扬,有必要把它单独拿出来写一下,然后使他可以和这个类中的所有东西步伐一致.为了需要,针对特定的类型,需要对模板...
我读过了您2005年4月的文章:“Wrappers: Use Our ManWrap Library to Get the Best of .NET in Native C++ Code”,文章中没有提供 DumpEnum 程序。...关键字:enum,template,function,specialization,枚举,模板,特化
主要介绍了C++编程中类模板的三种特化,需要的朋友可以参考下
一组新的多维数组模板类 by chen3feng(RoachCock@smth) email: chen3feng@163.com, chen3fengx@163.com, chen3fengx@hotmail.com [引言] 在C/C++开发中,多维数组是一个让很多人感到棘手的问题.原因...
原理:模板元程序由编译器在编译期解释执行,利用模板...类模板特化是指将模板参数指定为某一种类型,你必须在起始处声明一个template<>,接下来声明用来特化模板的类型。这个类型被用作模板实参,且必须在类名后面
《Qt中的C++技术》讨论了以下内容:类模板特化技术;分析比较了C++标准库、Qt对字符串、数据输入/输出的处理思路;隐式共享与d-pointer技术;函子及其在QTL(Qt Template Library)中的应用,QTL是如何使用模板特化...
16.6.4 类模板的部分特化 570 16.7 重载与函数模板 570 小结 573 术语 574 第五部分 高级主题 第17章 用于大型程序的工具 579 17.1 异常处理 580 17.1.1 抛出类类型的异常 581 17.1.2 栈展开 582 17.1.3 捕获异常 ...