给出以下代码:
class Base
{
public:
virtual ~Base() = default;
};
class Derived : public Base { };
int main(void)
{
Derived d;
Base* pb = &d;
Base** ppb = &pb;
Derived** ppd = ...; // Can this be defined in a type-safe manner?
return 0;
}
是否可以为赋值给出一个类型安全的表达式ppd
,无需引入类型的中间变量Derived*
?
AFAIK,并非没有声明Derived
指向d
. The Base
指向d
(pb
) 已经通过抽象丢失了类型信息,如果不进行不安全的强制转换就无法恢复。
由于您声明的是一个指向 a 的指针Derived
,你需要一个指向Derived
第一的。例如:
Derived* pd = &d;
Derived** ppd = &pd;
这两个定义都是类型安全的,在编译时进行检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)