C语言多继承时子类与基类指针关系
C语言多继承时,子类的指针和第一个基类的指针应该是一样的,和第二个基类是不一样的。因为每个父类有一个虚表,子类的虚函数放在第一个父类虚表的最后。
union与struct区别
1)union共用体中的变量公用空间,其大小由内部变量类型所占空间最大的那个决定
2)struct中的内存对齐,以不可分割的变量类型的最大内存为标准对齐内存,其他变量类型都要满足其大小,如果按顺序合并后能满足就将变量类型合并存储,
如果不能则自己占有一个存储单元。
volatile修饰符
确保本条指令不会因编译器的优化而省略,且要求每次直接读值。即:防止编译器对代码进行优化。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
也就是优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。