Die Größe von C++ - Klassen

Hier ist der code, der die Drucke Größe der verschiedenen Klassen

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

Die Ausgabe des Programms auf C++11 compiler ist

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

Verstehe ich, warum die Leere Klasse hat die Größe 1 Größe der leere Klasse object. Für die abstrakte Klasse, die das Objekt speichert einen Zeiger für die Implementierung von virtuellen Funktionsaufruf-Mechanismen. Aber was ist mit den Größen der anderen Klasse von Objekten (NotAbstrClass und MixClass) ?

Verstehen, dass alles, was sizeof() sagt, Sie ist von Natur aus abhängig, insbesondere compiler, das Betriebssystem und insbesondere die Einstellungen.
Sie sind richtig über es. Aber für den Augenblick denken, dass ich ein 32-bit-desktop-Prozessor-Architektur mit einem 32-bit OS. In einem solchen Fall können Sie konkrete Werte für die Größe von integer-Typen (4 Byte) und der Typ Zeiger(4 byte).
Duplikat von stackoverflow.com/questions/4766323/...
Ich weiß das ist eine dumme Frage und ich dachte das gleiche, als ich gefragt wurde, diese Art von Fragen in einem interview mit einem Halbleiter-Unternehmen.

InformationsquelleAutor nurabha | 2013-06-24

Schreibe einen Kommentar