• c++/oop类模板


    c++/oop---类模板

    定义出一批相似的类, 可以定义类模板, 然后由类模板生成不同的类

    例:可变长整型数组

    写法:

    template <类型参数表(class 类型参数1,class 类型参数2...)>

    class 模板名{

         ....

    };

    类模板中的成员函数在外面定义时:

    template <类型参数表(class 类型参数1,class 类型参数2...)>

    返回值类型 类模板名<类型参数名列表>::成员函数名(参数表)

    {

    ...

    }
    定义对象:

    类模板名<真实类型参数表>对象名(构造函数实际参数);

    编译器由类模板生成类的过程叫类模板的实例化。由类模板实例化得到的类,叫模板类。
    同一个类模板的两个模板类是不兼容的 

    成员函数也可以是函数模板:

    #include <iostream>
    using namespace std;
    template <class T>
    class A {
    	public:
    		int num;
    		A (int n):num(n){}
    		template<class T2>
    		void Func(T2 t) {
    			for(int i=1;i<=num;i++)
    			cout << t  << endl;
    		}
    };
    int main() {
    	A<int> a(5);
    	a.Func('K');
    	a.Func("hello");
    	return 0;
    }
    /*
    K
    K
    K
    K
    K
    hello
    hello
    hello
    hello
    hello
    
    */

    类模板的”< 类型参数表 >” 中可以出现非类型参数:

    template <class T, int size>
    2 class CArray{
    3 T array[size];
    4 public:
    5 void Print() {
    6 for(int i = 0; i < size; ++i)
    7 cout << array[i] << endl;
    8 }
    9 };
    10 CArray<double,40> a2;
    11 CArray<int,50> a3;

    函数、类、类的成员函数作为类模板的友元
    函数模板作为类模板的友元
    函数模板作为类的友元
    类模板作为类模板的友元 

  • 相关阅读:
    HDU1255覆盖的面积
    B. An express train to reveries
    Long Long Message(后缀数组)
    Longest Common Substring(最长公共子序列)
    最长上升子序列(NlogN)总结
    bzoj 1500 维修数列
    HDU 6357 Hills And Valleys
    牛客暑假多校第六场 I Team Rocket
    HDU 6346 整数规划 二分图匹配最优解
    牛客暑假多校第五场 I vcd
  • 原文地址:https://www.cnblogs.com/liankewei/p/16082048.html
Copyright © 2020-2023  润新知