1. Struct 的默认成员权限是 Public,而Class的默认成员权限是Private.
2. Struct 可以在定义的时候,直接以{}对成员变量赋初值,而Class不可以。
struct structA
{
char a;
char b;
int c;
};
structA a = {'a', 'a', 1};
struct的成员对齐问题:
#include <iostream.h>
#pragma pack(n) //定义编译器字节对齐方式 ,当 n大于最大成员的size时 则不起作用,仍然按自然对齐方式编译
struct example1
{
short a;
long b;
};
struct example2
{
char c;
example struct1;
short e;
};
#pragma pack () //取消自定义字节对齐方式
int main(int argc, char* argv[])
{
example2 struct2;
cout << sizeof(example1) <<endl;
cout << sizeof(example2) << endl;
cout <<(unsigned int)(&struct2.struct1) - (unsigned int)(&struct2) << endl;
return 0;
}
答案:8
16
4
分析:
默认情况下,编译器为结构体的每个成员按其自然条件分配空间,各成员按声明顺序存储,第一个成员的地址和整个结构
体的地址相同。(默认对齐是指按结构体中size最大的成员对齐 )
long ---4
int ---4
short---2
a =>11- -
b =>1111
8
c =>1- - -
a =>11- -
b =>1111
e =>11- -
16
struct2中c占4字节,故地址长度为:4