struct 与 class
又一次听struct与class的区别之讨论。。。
首先struct与class的区别是对于c++ 而言的,对于c语言没有Abstract Data Type(class)。
c++ 语言里关键字struct与class到底有什么区别呢? 答案是基本没有区别。
c++ 是c语言的一个超集, 因为兼容c, 保留了关键字struct 的。 没有用关键字“struct”而用“class”来表示Abstract Data Type,只是”class“ 能更好的表达Abstract Data Type的意义。
这样一再讨论struct与class的区别的问题, 其实说到底是那个关键字定义了POD(plain old data)。
struct A
{
int date;
void set_date();
};
struct B
{
int date;
virtual void set_date();
};
上面两个A是POD. 关键字struct class 并不区分哪个是POD。 而是由你的定义来决定。 B 为了完成c++的对象模型, 编译器在B内部安插了一个指向虚表的指针。 详情可查阅--深入解析c++对象模型(inside the c++ object model)