私はこのコードの塊を持っています:
#include <stdio.h>
class CoolClass {
public:
virtual void set(int x){x_ = x;};
virtual int get(){return x_;};
private:
int x_;
};
class PlainOldClass {
public:
void set(int x) {x_ = x;};
int get(){return x_;}
private:
int x_;
};
int main(void) {
printf("CoolClass size: %ld\n", sizeof(CoolClass));
printf("PlainOldClass size: %ld\n", sizeof(PlainOldClass));
return 0;
}
CoolClass のサイズが 16 と表示されているので、少し混乱しています。どのように?なんで?vtable へのポインタがあっても、サイズは 8 にすべきではありませんか? oldclass のサイズは予想どおり 4 です。
編集: g++ 4.6.3 で Linux Mint 64 ビットを実行しています。