Understanding of static_cast in C++
Understanding of static_cast in C++
我试图了解static_cast
是如何工作的。我有以下代码:
Projcet::ProjcetType result =
static_cast<Projcet*>(DS)->removeProjcet(ID);
从文档中我了解到它用于创建临时对象。如果没有static_cast
,以下命令应该是什么样子?我觉得它会让我更好地理解它的作用。
编辑:
忘了提:void *DS
和Projcet
是一个类。
我猜DS
来自一些返回void*
的旧窗口库。可能是用 C 写的。所以你得到了这个空指针,并希望将其用作Projcet
参考。您的编译器对DS
一无所知,只知道它是一个指针。所以它不能把它当作Projcet
的对象指针。
因此,通过使用 static_cast
,您可以告诉提交者您希望使用 DS
作为指向Projcet
对象的指针。现在编译器可以连接到成员removeProjcet()
之类的。
static_cast
的缺点是,如果您没有指向Projcet
的指针,则程序最有可能崩溃。更糟糕的是,继续未定义的行为。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- std::async from std::async in windows xp