La taille des classes C++

Voici le code qui affiche la taille de différentes classes

#include <iostream>

using namespace std;

class EmptyClass
{    
};

class AbstractClass
{
  public: 
          virtual void funcOne() = 0;
          virtual void funcTwo() = 0;
};

class NotAbstrClass
{
  public: int virtFunc( int );
};

class MixClass
{
  public:
          virtual void clFunc( int );
          static int i;
          int j;
};

int main()
{
    //Print size of class or class objects
    cout<<"Size of empty class: "<< sizeof(EmptyClass)<<endl;          
    cout<<"Size of Abstract class :"<< sizeof(AbstractClass)<<endl;
    cout<<"Size of Non Abstract class: "<< sizeof(NotAbstrClass)<<endl;
    cout<<"Size of Mix class: "<< sizeof(MixClass)<<endl;
    return 0;
}

La sortie du programme sur le C++11 compilateur est

Size of empty class: 1
Size of Abstract class :4
Size of Non Abstract class: 1
Size of Mix class: 8

Je comprends pourquoi Vide classe de taille a 1 La taille de vide de la classe de l'objet. Pour la classe abstraite, l'objet stocke un pointeur pour la mise en œuvre de fonction virtuelle mécanismes d'appel. Mais que dire de la taille d'autres objets de la classe (NotAbstrClass et MixClass) ?

Comprendre que tout ce que sizeof() vous dit est intrinsèquement dépendante de ce compilateur dans ce système d'exploitation et les paramètres.
vous avez raison à ce sujet. Mais pour le moment, considérez que je suis en utilisant 32 bits bureau de l'architecture du processeur avec un 32-bit OS. Dans de tels cas, vous pouvez utiliser le béton valeurs pour la taille des types d'entiers (4 octets), et un pointeur de type(4 octets).
double de stackoverflow.com/questions/4766323/...
Je sais que c'est une question stupide, et je pensais la même chose quand j'ai demandé ce genre de questions dans un entretien avec une entreprise de semi-conducteurs.

OriginalL'auteur nurabha | 2013-06-24