static_cast
http://www.cplusplus.com/doc/tutorial%20%20/typecasting/ class CBase {};class CDerived: public CBase {};CBase * a = new CBase;CDerived * b = static_cast<CDerived*>(a);This would be valid, although b would point to an incomplete object of the class and could lead to runtime errors if dereferenced.为什么运行会出错?? 如果 是因为继承类增加了 成员导致的 引用失败,那么 以下的例子 为什么又是对的??char * s="helloyxsgs";int* p=(int*)s; // p现在可以引用4个字节了, s只能引用一个。
问题2:关于static_cast 还有一段文字Or any conversion between classes with explicit constructors or operator functions as described in "implicit conversions" above. 是不是这样理解:假设有 类A,Bclass A{}; class B{ int data1; string str; }; int main() { A a; B b=static_cast<B>(a); //这里是错误的, 那段英文说是可以的啊。 }