Qu'est-ce qui ne va pas avec sizeof
? Cela devrait fonctionner sur les objets et les classes.
void foo( bar* b )
{
int i = sizeof bar;
int j = sizeof *b;
// please remember, that not always i==j !!!
}
Edit :
Voici l'exemple auquel je pensais, mais pour une raison quelconque, il ne fonctionne pas. Quelqu'un peut-il me dire ce qui ne va pas ?
#include <iostream>
using namespace std;
class bar {
public: int i;
bar( int ii ) { i = ii; }
virtual ~bar(){ i = 0; }
virtual void d() = 0;
};
class bar2: public bar {
public: long long j;
bar2( int ii, long long jj ):bar(ii){ j=jj; }
~bar2() { j = 0; }
virtual void d() { cout << "virtual" << endl; };
};
void foo( bar *b )
{
int i = sizeof (bar);
int j = sizeof *b;
cout << "Size of bar = " << i << endl;
cout << "Size of *b = " << j << endl;
b->d();
}
int main( int arcc, char *argv[] )
{
bar2 *b = new bar2( 100, 200 );
foo( b );
delete b;
return 0;
}
L'application a été exécutée sous linux (gcc 4.4.2) :
[elcuco@pinky ~/tmp] ./sizeof_test
Size of bar = 8
Size of *b = 8
virtual
0 votes
Bien sûr - sizeof(C) où C est la classe. L'imprimer est votre problème.