空类的大小
C++空类的大小不为0,不同编译器设置不一样,vs设置为1
原因:
- C++标准指出,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的地址;
- 带有虚函数的C++类大小不为1,因为每一个对象会有一个vptr指向虚函数表,具体大小根据指针大小确定(32位的操作系统,指针大小为4个字节);
- C++中要求对于类的每个实例都必须有独一无二的地址,那么编译器自动为空类分配一个字节大小,这样便保证了每个实例均有独一无二的内存地址
空类默认会添加哪些东西
- Empty(); // 缺省构造函数//
- Empty( const Empty& ); // 拷贝构造函数//
- ~Empty(); // 析构函数//
- Empty& operator=( const Empty& ); // 赋值运算符//
- Empty* operator&(); // 取址运算符
- const Empty* operator&() const; // 取址运算符 const