【发布时间】:2013-03-22 11:05:27
【问题描述】:
我有这段代码:
#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 位。
【问题讨论】:
-
更相关的是,您正在为哪个 CPU 编译?
标签: c++ polymorphism virtual-functions