3月28日收获
1.C语言printf中 "%P"的用法,这个表示输出的是指针地址。。。
2.C++中的强制转换, reinterpret_cast 与 static_cast之间的区别,前者不做任何转换,直接按照新类型来解析地址,后者会做转换。
Class A{
int m_a;
};
Class B{
int m_b;
};
Class C: public A(), public B() {
}
C c;
printf("%P,%P,%P", &c; reinterpret_cast<B*>&c, static_cast<B*>&c); 结果前两个地址相同, 后一个偏移一位。
由于后者在转换后,自动将指针指向int m_b部分,使得转换有意义,因此在使用reinterpret_cast的时候要小心,避免无意义的转换。