类模板

来源:互联网 发布:二战日本的海军数据 编辑:程序博客网 时间:2024/06/15 21:56

在编译阶段,类名不产生符号。

1.类模板的特例化:类模板的完全特例化和类模板的部分特例化

//类模板的完全特例化template<>class A<int,double>{   int a;   double b;};//类模板的部分特例化template<typename T>calss B<int,T>{    int a;     T  b;};

2.同一模板实例化的两种不同类型也可以赋值拷贝,需要自己实现成员函数的模板,这时候需要声明一个类是另一个类的友元,这里是一对多的友元关系
这里写图片描述
3.当我们自己实现了拷贝构造函数的模板之后,可以实现不同类型的拷贝构造,这种模板可以和普通的同种类型的拷贝构造共存,但是这种自己实现的拷贝构造函数只能接收不同类型,当它实现同种类型的构造拷贝的时候就会出错。
这里写图片描述

4.只有先有模板,才能进行实例化,在我们进行实例化之前先看我们是否有相应的模板。

5.类模板,函数模板,成员方法模板都有特例化的版本.

6.普通的成员方法,成员方法模板,模板的特例化可共存,他们三者之间功能不会重叠,各自实现自己的功能。

  1. `
//E实例化的栈是原模版的友元template<typename  E> Friend  class  stack;

1)类模板的友元声明:
这里写图片描述

2)普通类的友元声明:
这里写图片描述

0 0
原创粉丝点击