说我有以下类类型
class base
{
};
class der : public base
{
};
使用static_Cast,您可以使用对象和指针。
我尝试了以下内容 - 其中有效(指针)
base* b = new base();
der * m = static_cast<der*>(b);
但以下情况不起作用
base b;
der m = static_cast<der>(b);
为什么第二个不起作用的任何建议?没有静态转换处理指针和对象吗?它适用于指针,但它不能与对象一起使用吗?
答案 0 :(得分:8)
在第一个中,你说&#34;我有一个指针,我保证它指向der
,所以请你顺其自然地说#34;。 1
在第二个问题中,您不能做出这样的承诺,因为您明确地拥有base
,而不是der
。
<小时/> <子> 1。当然,因为它实际 指向
der
,所以你在运行时会得到未定义的行为。