sizeof-Klasse mit int-Funktion, virtual-Funktion in C++?

Dies ist ein online-C++ - test-Frage, was getan wird.

#include<iostream>
using namespace std; 
class A
{

};
class B
{
int i; 
}; 

class C
{
void foo();
};
class D
{
virtual void foo();
};

class E
{
int i ; 
    virtual void foo();
};
class F
{
int i; 
    void foo();
};
class G
{
    void foo();
    int i;
    void foo1();
};

class H
{
    int i ;
    virtual void foo();
    virtual void foo1();
};
int main()
{
cout <<"sizeof(class A) : " << sizeof(A) << endl ;
cout <<"sizeof(class B) adding the member int i : " << sizeof(B) << endl ;
cout <<"sizeof(class C) adding the member void foo() : " << sizeof(C) << endl ;
cout <<"sizeof(class D) after making foo virtual : " << sizeof(D) << endl ;
cout <<"sizeof(class E) after adding foo virtual , int : " << sizeof(E) << endl ;
cout <<"sizeof(class F) after adding foo  , int : " << sizeof(F) << endl ;
cout <<"sizeof(class G) after adding foo  , int : " << sizeof(G) << endl ;
G g;
cout <<"sizeof(class G) after adding foo  , int : " << sizeof(g) << endl ;
cout <<"sizeof(class H) after adding int 2 virtual " << sizeof(H) << endl ;
return 0; 
}

Ausgabe:

sizeof(class A) : 1
sizeof(class B) adding the member int i : 4
sizeof(class C) adding the member void foo() : 1
sizeof(class D) after making foo virtual : 8
sizeof(class E) after adding foo virtual , int : 16
sizeof(class F) after adding foo  , int : 4
sizeof(class G) after adding foo   , unsigned int : 4
sizeof(class g) after adding foo  , unsigned int : 4
sizeof(class H) after adding int 2 virtual 16

Meine Fragen:

Warum siszeof(A) 1 und sizeof(C) 1 zu ?

Warum siszeof(H) ist 16 aber sizeof(G) 4 ?

Warum siszeof(E) ist 16 aber sizeof(F) 4 ?

Warum siszeof(D) ist 8 aber sizeof(E) ist 16 ?

Meine Vermutung:

Einer virtuellen Funktion ist ein Zeiger 8 bytes.
Aber, ich weiß nicht, warum E Größe 16 ?
Hinzufügen einer Funktion zu einer leeren Klasse ändert nicht seine Größe ?

Jede Hilfe ist willkommen.

Dank

Der compiler ist frei, zu richten die Mitglieder, wie es gerade passt.
Dieser fühlt sich viel wie eine Hausaufgaben-Frage. Ist es?
Vor ein paar Monaten, die Sie geschrieben, eine Lawine von kopieren-einfügen interview-Fragen und zeigte kein Interesse an der eigentlich nach oben, oder der Bevölkerungsgruppe, oder nehmen Sie sich etwas Zeit und denken und lernen für sich selbst. Jetzt bist du wieder genau das gleiche wieder. Dies ist nicht ein tutorial-website, und Sie haben zu tun, einige nach unten und schmutzig das lernen selbst. Darüber hinaus suchen diese Website vor der Buchung, wie viele von den Themen, die Sie (wird) bringen die diskutiert wurden, über und über auf ALSO schon.

InformationsquelleAutor user1002288 | 2012-02-24

Schreibe einen Kommentar