下面的代码的执行产生这样的输出:的dynamic_cast
1 is a null pointer
2 is not a null pointer
代码
class base {};
class derived1: public base {};
class derived2: public base {};
int main() {
base *baseptr[1];
baseptr[0] = new derived2;
derived1 *derptr = new derived1;
derived1 *derivedptr1 = dynamic_cast<derived1*>(baseptr[0]);
derived1 *derivedptr2 = dynamic_cast<derived1*>(derptr);
cout<<((derivedptr1==0)?"1 is null pointer":"1 is not a null pointer") << endl;
cout<<((derivedptr2==0)?"2 is null pointer":"2 is not a null pointer") << endl;
}
为什么derivedptr2仅初始化和derivedptr1是不是?因为两者都有一个有效的右手边值。这是否与动态演员有关,并且在第二种情况下,我将derived1 *转换为derived1 *?
请首先解释一下您对输出的疑惑或奇怪。 – 2011-06-04 05:12:04
为什么在标题中包含'static_cast',实际问题甚至没有提到'static_cast'? – AnT 2011-06-04 05:27:42