【问题标题】:Why use static_cast for auto pointer in C++11?为什么在 C++11 中使用 static_cast 作为自动指针?
【发布时间】:2015-09-05 08:02:46
【问题描述】:

我看到了 cocos2dx (v3) 示例:

auto target = static_cast<Sprite*>(event->getCurrentTarget());

为什么不使用dynamic_cast()?它不是静态变量。

【问题讨论】:

  • “它不是静态变量”static_caststatic 的变量无关。

标签: c++11 cocos2d-x cocos2d-x-3.0


【解决方案1】:

static_cast()static 说明符无关。如果在编译时(即“静态”)执行强制转换,这在您添加到问题中的代码的情况下是可能的。

另一方面,dynamic_cast()运行时期间执行。

【讨论】:

  • 请注意,static_cast 仍然可以包含运行时计算(移动指针),但是计算本身在编译时是已知的,它不依赖于指针的值,也不依赖于指向的对象。
  • static_cast就像c语言(类)目标方法
  • @zszen 这仅适用于static_cast 有效的情况。如果不是这样,C 风格的演员会默默地变成reinterpret_cast(可能添加了const_cast)。这就是为什么 C 风格的强制转换如此危险并且最好在 C++ 中避免的原因。
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 2015-06-08
  • 2014-01-04
  • 2023-01-29
  • 2013-01-17
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
相关资源
最近更新 更多