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

C++のis_finalテンプレート


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

is_finalは、ヘッダーファイルの下にあるテンプレートです。このテンプレートは、指定されたタイプTが最終クラスであるかどうかを確認するために使用されます。

C ++の最終クラスとは何ですか?

最終指定子を使用してクラスを宣言すると、それは最終クラスと呼ばれます。最終クラスは、別のクラスを作成するために拡張できない特別な種類のクラスです。 C ++では、クラスをファイナルとして作成し、クラスをフレンドとして作成してから、そのクラスを仮想的に継承して、そのクラスを拡張不可にします。

最終クラスの例

class final_abc; //Class which is to be made final
class abc {
   private:
   abc(){cout<<"abc constructor";}
   friend class final_abc;
};
class final_abc : virtual abc //made it final class. {
   public:
   final_abc(){cout<<"Final class constructor";}
};
class derive : public final_abc; //Error can't be extended

構文

template <class T> is_final;

パラメータ

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

戻り値

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

Input: class final_abc;
   class abc { friend class final_abc; };
   class final_abc : virtual abc{ };
   is_final<abc>::value;
Output: False

Input: class final_abc;
   class abc
   { friend class final_abc; };
   class final_abc : virtual abc{ };
   is_final<final_abc>::value;
Output: True

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
   //Same if it will be a structure instead of a class
};
class T_P final {
   //Same if it will be a structure instead of a class
};
int main() {
   cout << boolalpha;
   cout << "Using is_final";
   cout << "\nTutorials Point: "<<is_final<TP>::value;
   cout << "\nT_P Final: "<<is_final<T_P>::value;
   cout << "\ncheck for char: "<<is_final<int>::value;
   return 0;
}

出力

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

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false

#include <iostream>
#include <type_traits>
using namespace std;
union TP {
   //Union
};
union T_P final {
   //Union
};
int main() {
   cout << boolalpha;
   cout << "Using is_final";
   cout << "\nTutorials Point: "<<is_final<TP>::value;
   cout << "\nT_P Final: "<<is_final<T_P>::value;
   cout << "\ncheck for char: "<<is_final<int>::value;
   return 0;
}

出力

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

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false

  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は関数内で定義されています。したがって、ローカルクラスとして知られています。 ローカルクラ