使用static_cast进行向下转换 - 指针和对象

时间:2014-05-05 20:45:53

标签: c++ pointers object casting static-cast

说我有以下类类型

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);

为什么第二个不起作用的任何建议?没有静态转换处理指针和对象吗?它适用于指针,但它不能与对象一起使用吗?

1 个答案:

答案 0 :(得分:8)

在第一个中,你说&#34;我有一个指针,我保证它指向der,所以请你顺其自然地说#34;。 1

在第二个问题中,您不能做出这样的承诺,因为您明确地拥有base,而不是der

<小时/> <子> 1。当然,因为它实际 指向der,所以你在运行时会得到未定义的行为。