2009-01-02 6 views

Répondre

8

POD, Plain Old données, est tout type C++ qui a un équivalent en C.

type cv-qualifié est un type qui ont été qualifiés soit comme un const ou volatile.

// non cv_qualified 
int one; 
char *two; 

// cv-qualified 
const int three; 
volatile char * four; 

membres de données de type POD doivent être publiques et peuvent être de tous les types primitifs: bool, les types numériques, les types d'énumération, types pointeur de données, le type pointeur à la fonction, également des tableaux de l'un des précédent .

struct A //POD 
{ 
int n; 
double y; 
}; 

struct B //non-POD 
{ 
private: 
int n; 
double y; 
}; 
+0

Ce qui est en C++ qui rend le type C++ non équivalent à c – yesraaj

+0

Le type POD est défini de manière récursive, je pense. Votre définition exclut "ou tout autre type de POD". – Arkadiy

+0

Je suis d'accord avec Arkadiy: AFAIK, un POD peut contenir des POD et/ou des types intégrés. – paercebal

5

POD signifie Type Plain Old données. Il fait généralement référence à une classe utilisée pour stocker des données et des accesseurs, rien d'autre. Il est également implicite que la fonction n'a pas de vtable, ce qui signifie qu'il n'y a pas de membres polymorphes de la classe. Ceux-ci sont populaires pour les objets légers où vous ne voulez pas payer le prix de la classe polymorphe.

. C = Const, V = Volatile.

+0

vous avez manqué scalartype – yesraaj

+0

Ou pointeurs, d'ailleurs. Fondamentalement, tous les types hors classe sont des POD aussi IIRC. – MSalters

0

ce que les choses en C++ qui fait C++ Type non équivalent à c - Rajkumar

Comme dit CMS, un type POD est un type C++ qui a un équivalent en C: donc, il doit suivre les mêmes règles C utilise pour:

  • initialisation
  • copie
  • mise en page
  • adressage

Le type C++ devrait pas ont tout constructeur, doit pas surcharger l'opérateur d'affectation, doit pas avoir des fonctions virtuelles, classes de base, destructor et aussi membres non statiques privés ou protégés.

Questions connexes