クラステンプレートの概念と意味

概念と有意クラステンプレート
クラステンプレート
主に使用されるクラスのデータ要素を格納および整理
クラスにかかわらず、データ編成およびデータ要素の実施形態の特定のタイプの
ような、アレイ型リストの種類を、クラススタック、キュー:など
のC ++テンプレートでクラスのイデオロギー、実装クラスは、データ要素の特定のタイプに焦点を当て、そして唯一の機能を実装するクラスのニーズに関係しない作ります

C ++のテンプレートクラス
-同様に異なるタイプには、
-使用テンプレートクラス宣言の前に識別される
- <型名T>クラスで使用するために記載されたタイプを指すT
テンプレート<型名T>
クラスオペレーター
{
パブリック:
  T OP(T A、T B);
};

アプリケーションクラスのテンプレート
- のみディスプレイの特定のタイプを指定し、それは自動的に導出することができない
-特定のタイプを使用し、<タイプ>定義オブジェクト
オペレーター<整数> OP1;
演算子の<string> OP2;
INT I = op1.op(1,2);
文字列s = op2.op( "DT"、 "ソフトウェア")。

これは、Tは、クラステンプレート上の任意の場所とすることができる宣言型指す
同じ種類および機能のテンプレートテンプレートを処理するためのコンパイラ
-クラステンプレートから異なるクラスの特定のタイプによって生成
- クラステンプレートコード自体がステートメント場合コンパイルさ
- 他の場所で使用されるパラメータを交換した後、コードをコンパイルします

書式#include <iostreamの> 
の#include < 文字列 > 使用して名前空間はstdを、
テンプレート <型名T>
 クラスオペレーター
{ パブリック
    Tアドイン(T、T b)は
    { 返す +のBと、
    } 
    Tマイナス(T Aを、T b)は
    { 返す - B。
    } 
    Tは、乗算(Tは、T B)は
    { 返す * Bと、
    } 
    T除算(T、T b)は
    { 返す /のBと、
    } 
}。int型
{

 



        
        
        
        

のmain()
    演算子 < 整数 > ; OP1 
    COUT << op1.add(1。 2 <<)てendl; 

    演算子 < 文字列 > OP2; 
    COUT << op2.add(" こんにちは"" 世界")<< てendl;
     // COUT < <op2.minus( "こんにちは"、 "世界")<<てendl; // エラー。C ++で定義されていない減算2つの文字列オブジェクト、ので。

    戻り 0 ; 
}

类模板的工程应用:注意这三部分不是C++规范的一部分,也不是C++编译器要求必须这样做。只不过工程上的一种好的习惯
-类模板必须在头文件中定义
-类模板不能分开实现在不同的文件中
-类模板外部定义的成员函数需要加上模板<>声明

#ifndef OPERATOR_H
#define OPERATOR_H

template<typename T>
class Operator
{
public:
    T add(T a, T b);
    T minus(T a, T b);
    T multiply(T a, T b);
    T divide(T a, T b);

};

template<typename T>
T Operator<T>:: add(T a, T b)
{
    return a + b;
}
T Operator<T>:: minus(T a, T b)
{
    return a - b;
}
T Operator<T>:: multiply(T a, T b)
{
    return a * b;
}
T Operator<T>:: divide(T a, T b)
{
    return a / b;
}

#endif // OPERATOR_H

小结:
泛型编程的思想可以应用于类
类模板以相同的方式处理不同类型的数据
类模板非常适用于编写数据结构相关的代码
类模板在使用时只能显示指定类型

おすすめ

転載: www.cnblogs.com/-glb/p/11992557.html