Tipo de POD en C++

Zeeshan Afridi 12 octubre 2023
Tipo de POD en C++

POD en C++ significa Plain Old Data. Es una clase definida con las palabras clave struct o class y solo tiene miembros de datos como int, char, double, bool, firm/unsigned, long/short, float, etc.

Tipo de POD en C++

Como sabemos, los POD generalmente son tipos de datos integrados como clases y estructuras que puede definir con la palabra clave clase o estructura, pero no es como otras clases o estructuras. Los POD en C++ no admiten constructores, destructores, funciones virtuales, etc.

POD (Plain Old Data) en C++ es una clase o estructura agregada que contiene solo POD como miembros de datos. No define operadores de asignación de copia definidos por el usuario u otros miembros no estáticos del tipo de puntero a miembro.

Código de ejemplo:

#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;
}

Producción :

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

Este código tiene una clase ADD definida con la palabra clave struct y tiene dos miembros de datos: x e y. Los valores se pasan a los miembros de la clase ADD a través del objeto de clase en la función principal.

Estos valores se agregan y se muestran como salida en la instrucción cout. Ahora, la clase está lista y se pasan los valores.

Es hora de comprobar si es un POD o no; la función is_pod está aquí para ayudarnos. Devuelve True si la clase es un POD y devuelve False en caso contrario.

Además, los punteros, incluidos el puntero a miembro y el puntero a función, son POD. Enums, const y volatile también son POD.

Una estructura, clase o unión de POD también es un POD, siempre que todos los miembros de datos no estáticos se especifiquen como públicos y no tengan funciones virtuales, constructores o destructores, y clase base.

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

Artículo relacionado - C++ Type