不断更新:
数据对齐,见:http://book.csdn.net/bookfiles/827/10082724877.shtml#_ftn10
字节对齐,说明见:http://blog.csdn.net/zzffly9/archive/2007/10/26/1844421.aspx
dynamic_cast可以用于类之间的交叉转换,说明如下:
dynamic_cast还支持交叉转换(cross cast)。如下代码所示。
class A{
public:
int m_iNum;
virtual void f(){}
};
class B:public A{
};
class D:public A{
};
void foo(){
B *pb = new B;
pb->m_iNum = 100;
D *pd1 = static_cast(pb); //compile error
D *pd2 = dynamic_cast(pb); //pd2 is NULL
delete pb;
}
在函数foo中,使用static_cast进行转换是不被允许的,将在编译时出错;而使用 dynamic_cast的转换则是允许的,结果是空指针。