812得票9回答
为什么要使用 static_cast<T>(x) 而不是 (T)x?

我听说应该优先使用static_cast函数而不是C风格或简单的函数风格转换。这是真的吗?为什么呢?

288得票7回答
static_cast<> 和 C风格强制类型转换之间有什么区别?

有没有理由更喜欢使用static_cast&lt;&gt;而不是C风格的强制类型转换?它们是否等效?有任何速度差异吗?

263得票9回答
当将void*转换为任何类型时,我应该使用static_cast还是reinterpret_cast?

在将void*指针转换为另一个指针类型时,static_cast和reinterpret_cast似乎都可以正常工作。是否有理由更喜欢其中一种?

74得票4回答
使用boost::shared_ptr和static_cast?

如何使用boost::shared_ptr等效实现static_cast? 换句话说,我需要如何重写下面的代码:Base* b = new Derived(); Derived* d = static_cast&lt;Derived*&gt;(b); 当使用 shared_ptr 时应注意什...

73得票7回答
C++无法通过虚拟基类A将基类A转换为派生类型B

我有四个类:class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {}; 尝试将A*静态转换为B*时,我收到以下错误消息:cannot co...

69得票3回答
指针类型转换的正确方式

考虑到以下代码(以及VirtualAlloc()返回一个void*): BYTE* pbNext = reinterpret_cast&lt;BYTE*&gt;( VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE)); ...

65得票3回答
为什么不能在char *和unsigned char *之间进行静态转换(static_cast)?

显然,编译器认为它们是不相关的类型,因此需要使用reinterpret_cast。为什么这是规则?

54得票6回答
当涉及虚继承时,为什么不能使用static_cast进行向下转型?

请提供需要翻译的完整内容,我才能开始翻译。struct Base {}; struct Derived : public virtual Base {}; void f() { Base* b = new Derived; Derived* d = static_cast&l...

44得票7回答
为什么C++中有reinterpret_cast,当两个链接的static_cast可以完成它的工作?

假设我想将A*转换为char*,反之亦然,我们有两种选择(我的意思是,很多人认为我们有两种选择,因为两者似乎都可以工作!这就是混淆所在!):struct A { int age; char name[128]; }; A a; char *buffer = static_ca...

41得票1回答
qobject_cast是如何工作的?

我在Qt中找到了以下代码,但是对于这里发生的事情有点困惑。特别是 reinterpret_cast&lt;T&gt;(0) 是什么意思? template &lt;class T&gt; inline T qobject_cast(const QObject *object) { /...