C++语言程序设计 include <iostream> using namespace std template <class X> void swan( &a X&h i Temp, temp=a;a=b; b=temp cout <<"Inside template swap. n, y void swap1(int&a,int&b)∥重载模板函数swap10 i int temp, temp=a; a=b, b=temp; cout < Inside swap int specialization. n int maino i int i=1, j=2; float X=1.1, y=2.3: sWap1(,j);∥调用非模板函数 void swap1(int&a,int&b) sWap1(xy);∥调用模板的实例 cout<<" swapped i,j:"≤≤i<"<j<"nl; cout <<"swapped x, y: "<<X<<<<y<<r x return o
C++语言程序设计 11 #include <iostream> using namespace std; template <class X> void swap1(X &a, X &b) { X temp; temp = a; a = b; b = temp; cout << "Inside template swap.\n"; } void swap1 (int &a, int &b) //重载模板函数swap1 () { int temp; temp = a; a = b; b = temp; cout << "Inside swap int specialization.\n"; } int main() { int i=1, j=2; float x=1.1, y=2.3; swap1(i, j); //调用非模板函数void swap1(int &a, int &b) swap1(x, y); //调用模板的实例 cout << "swapped i, j: " << i << ' ' << j << '\n'; cout << "swapped x, y: " << x << ' ' << y << '\n'; return 0; }
C++语言程序设计 模板的显式特化允许定制模板函数的另一个版本 以适应特殊情况 template<> void swap 1 <int>(int &a, int &b) i int temp; temp =a;a=b,b=temp cout << Inside swap1 int specialization In x 12
C++语言程序设计 12 模板的显式特化允许定制模板函数的另一个版本 以适应特殊情况 。 template<> void swap1<int>(int &a, int &b) { int temp; temp = a; a = b; b = temp; cout << "Inside swap1 int specialization.\n"; }
C++语言程序设计 为升么册要类模板? class Store i private int iten;∥用于存放int类型的数据 int have value;∥用于标记tem是否已被存入内容 public Store(void);∥默认形式(无形参)的构造函数 int getElem(void);∥提取数据函数 void pute| em(int x);∥入数据函数 } 如果想存储 double类型、foat类型、结构体类型类类型需要 分别定义同样处理功能的 Store类
C++语言程序设计 13 为什么需要类模板? class Store { private: int item; // 用于存放int类型的数据 int haveValue; // 用于标记item是否已被存入内容 public: Store(void); // 默认形式(无形参)的构造函数 int GetElem(void); //提取数据函数 void PutElem(int x); //存入数据函数 }; 如果想存储double类型、float类型、结构体类型、类类型需要 分别定义同样处理功能的Store类
C++语言程序设计 类模板的作用 类 模使用类模板使用户可以为类声明 板种模式,使得类中的某些数据成员、 某些成员函数的参数、某些成员函数 的返回值,能取任意类型(包括基本 类型的和用户自定义类型)。 x
C++语言程序设计 14 类模板的作用 使用类模板使用户可以为类声明一 种模式,使得类中的某些数据成员、 某些成员函数的参数、某些成员函数 的返回值,能取任意类型(包括基本 类型的和用户自定义类型)。 类 模 板
C++语言程序设计 类模板的声明 类 模·类模板: 板 template<模板参数表> cass类名 {类成员声明} 如果需要在类模板以外定义其成员 函数,则要采用以下的形式: template<模板参数表 类型名类名<模板参数名>函数名 x
C++语言程序设计 15 类模板的声明 ⚫ 类模板: template <模板参数表> class 类名 {类成员声明} ⚫ 如果需要在类模板以外定义其成员 函数,则要采用以下的形式: template <模板参数表> 类型名 类名<模板参数名>::函数名(参 数表) 类 模 板