在下面的代码中,在case 1
中构造obj
时,我们也可以构造derived
类,但它的成员函数只能由obj
访问。因此,虽然在铸造(即在情况2)下,使用obj
作为源,但我们可以在其中构建derived
。为什么它需要obj
需要多态?C++ dynamic_cast - 多态性需求和向下转换
如果我把你和我上面的描述混淆了,为什么在upcast obj
不需要是多态的,但是当它下降时需要使用dynamic_cast
?
class base
{
public:
base()
{
cout<< " \n base constructor \n";
}
};
class derived:public base
{
public:
derived()
{
cout <<" \n derived constructor \n";
}
};
base *obj = dynamic_cast<base*> (new derived) ; // case 1: explicitly upcasting
derived *OBJ = dynamic_cast<derived*> (obj) ; // case 2: error
谢谢。
没有错,如果我明确向上,这在标准文档中清楚地说。 – Mahesh 2011-01-10 08:29:06