Understanding of static_cast in C++

Understanding of static_cast in C++

本文关键字:in C++ cast of static Understanding      更新时间:2023-10-16

我试图了解static_cast是如何工作的。我有以下代码:

Projcet::ProjcetType result =
            static_cast<Projcet*>(DS)->removeProjcet(ID);

从文档中我了解到它用于创建临时对象。如果没有static_cast,以下命令应该是什么样子?我觉得它会让我更好地理解它的作用。

编辑:

忘了提:void *DSProjcet是一个类。

我猜DS来自一些返回void*的旧窗口库。可能是用 C 写的。所以你得到了这个空指针,并希望将其用作Projcet参考。您的编译器对DS一无所知,只知道它是一个指针。所以它不能把它当作Projcet的对象指针。

因此,通过使用 static_cast ,您可以告诉提交者您希望使用 DS 作为指向Projcet对象的指针。现在编译器可以连接到成员removeProjcet()之类的。

static_cast的缺点是,如果您没有指向Projcet的指针,则程序最有可能崩溃。更糟糕的是,继续未定义的行为。