C++ の POD 型

Zeeshan Afridi 2023年10月12日
C++ の POD 型

C++ の POD は Plain Old Data の略です。 これは、キーワード struct または class で定義されたクラスであり、int、char、double、bool、signed/unsigned、long/short、float などのデータ メンバーのみを持ちます。

C++ の POD 型

私たちが知っているように、POD は通常、キーワード class または struct で定義できるクラスや構造体のような組み込みデータ型ですが、他のクラスや構造体とは異なります。 C++ の POD は、コンストラクタ、デストラクタ、仮想関数などをサポートしていません。

C++ の POD (Plain Old Data) は、データ メンバーとして POD のみを含む集約クラスまたは構造体です。 ユーザー定義のコピー代入演算子や、ポインターからメンバーへの型の他の非静的メンバーは定義しません。

コード例:

#include <iostream>
using namespace std;

// POD (Plain Old Data)
struct Add {  // defined with the keyword struct
  int x;
  int y;
};

int main() {
  struct Add a;

  a.x = 1;
  a.y = 2;
  cout << "x = " << a.x << endl << "y = " << a.y << endl;
  cout << "Sum of x and y = " << a.x + a.y << endl;

  std::cout << std::boolalpha;
  std::cout << std::is_pod<Add>::value << '\n';  // this is to check POD,
                                                 // it returns Boolean value
  return 0;
}

出力:

x = 1
y = 2
Sum of x and y = 3
true

このコードには、キーワード struct で定義されたクラス ADD があり、xy の 2つのデータ メンバーがあります。 値は、メイン関数のクラス オブジェクトを介して ADD クラス メンバーに渡されます。

これらの値はさらに追加され、cout ステートメントの出力として表示されます。 これで、クラスの準備が整い、値が渡されます。

POD かどうかを確認する時が来ました。 関数 is_pod は私たちを助けるためにここにあります。 クラスが POD の場合は True を返し、それ以外の場合は False を返します。

さらに、メンバーへのポインターおよび関数へのポインターを含むポインターは POD です。 Enumsconst、および volatile も POD です。

POD の structclass、または union も POD です。ただし、すべての非静的データ メンバーが public として指定され、仮想関数、コンストラクタ、デストラクタ、および基本クラスを持たない場合に限ります。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - C++ Type