本随笔紧接上个随笔:空结构体(类对于C++)的大小
http://www.cppblog.com/windcsn/archive/2011/04/13/144162.html这里试图讨论为什么C++的结构体或类即使没有成员也需要一个字节的大小?
首先需要一个字节的作用在上个随笔中已经说明,是为了在生成实例的时候确定区别;但实际上在C里面是不支持空成员的结构体,直接报编译错误。
因此这是C++特有的特性,可能有如下的原因:
1.C++里面必须支持没有成员的类,比如纯虚类;这些类只有方法,没有数据成员(虽然会有虚表);但这些类不会被实例化。
2.为了达到统一,非纯虚类的C++结构体和类也会被C++支持,但他们需要实例化,所以需要提供一个字节来可以给他们分配内存。
而C里面是不支持没有成员的结构体(VC里面是编译不过的),其实完全没有必要支持这种无意义的定义,从而更简单。
欢迎讨论。