C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のis_classテンプレート


この記事では、C++STLでのstd::is_classテンプレートの動作、構文、および例について説明します。

is_classテンプレートは、定義された型が他の型ではなくクラス型であるかどうかを確認するために使用されます。

クラスとは何ですか?

クラスは、ユーザー定義のデータ型、またはキーワード「class」で宣言されたいくつかのデータメンバーまたはメンバー関数を含むデータ構造です。

class abc {
   int data_members;
   void member_function();
};

したがって、is_classテンプレートは、タイプTがクラスであることを確認し、それに応じてブール値trueまたはfalseを返します。

構文

template <class T> is_class;

パラメータ

テンプレートにはタイプTのパラメータのみを含めることができ、指定されたタイプがクラスであるかどうかを確認できます。

戻り値

ブール値を返します。指定された型がクラスの場合はtrue、指定された型がクラスでない場合はfalseを返します。

Input: class abc {
};
is_class<abc>::value;
Output: True

Input: union abc {
};
is_class<abc>::value;
Output: False

#include <iostream>
#include <type_traits>
using namespace std;
class TP_1 {
};
union TP_2 {
   int var_1;
   float var_2;
};
int main() {
   cout << boolalpha;
   cout << "checking for is_class template: ";
   cout << "\nTP_1 class : "<<is_class<TP_1>::value;
   cout << "\nTP_2 union : "<< is_class<TP_2>::value;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

checking for is_class template:
TP_1 class : true
TP_2 union : false

#include <iostream>
#include <type_traits>
using namespace std;
class TP_1 {
   int var_1;
   float var_2;
   char var_3;
};
union TP_2 {
   int var_1;
   float var_2;
   char var_3;
};
struct TP_3 {
   int var_1;
   float var_2;
   char var_3;
};
int main() {
   cout << boolalpha;
   cout << "checking for is_class template: ";
   cout << "\nTP_1 class : "<<is_class<TP_1>::value;
   cout << "\nTP_2 union : "<< is_class<TP_2>::value;
   cout << "\nTP_3 structure : "<< is_class<TP_3>::value;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

checking for is_class template:
TP_1 class : true
TP_2 union : false
TP_3 structure : true

  1. C++での構造とクラス

    C ++では、構造とクラスは基本的に同じです。しかし、いくつかの小さな違いがあります。これらの違いは以下のようなものです。 クラスメンバーはデフォルトでプライベートですが、構造体のメンバーはパブリックです。違いを確認するために、これら2つのコードを見てみましょう。 サンプルコード #include <iostream> using namespace std; class my_class {    int x = 10; }; int main() {    my_class my_ob;    cout <&l

  2. C++のローカルクラス

    関数内で宣言されたクラスは、その関数に対してローカルであるため、C++ではローカルクラスと呼ばれます。 ローカルクラスの例を以下に示します。 #include<iostream> using namespace std; void func() {    class LocalClass {    }; } int main() {    return 0; } 上記の例では、func()は関数であり、クラスLocalClassは関数内で定義されています。したがって、ローカルクラスとして知られています。 ローカルクラ