【问题标题】:"warning: use of old-style cast" in g++ [duplicate]g ++中的“警告:使用旧式演员表” [重复]
【发布时间】:2011-07-12 02:07:20
【问题描述】:

可能重复:
When should static_cast, dynamic_cast and reinterpret_cast be used?

有了这个 C++ 代码,

char* a = (char*) b;

我收到警告warning: use of old-style cast

新风格的演员阵容是什么?

【问题讨论】:

  • 好吧,b 是什么?

标签: c++ casting g++


【解决方案1】:

reinterpret_caststatic_castdynamic_castconst_cast 是 c++ cast 的替代品。

  • const_cast 从 const 变量中删除 const/volatile。
  • dynamic_cast 在多态类型之间进行强制转换时执行运行时有效性检查
  • static_cast 在继承层次结构中执行例如向上/向下转换,但没有运行时检查,或者显式执行可能是隐式的转换(例如从浮点数到整数)
  • reinterpret_cast 在不相关的类型之间进行转换。

简要语法示例:

char* a = (char*) b; 
//would be 
char* a = static_cast<char*>(b);
//to remove the warning

【讨论】:

    【解决方案2】:

    阅读本主题以了解各种风格的 C++ 风格转换:

    When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?

    【讨论】:

    • 我认为,如果您认为指向另一个问题的链接是合适的答案,那么该问题就是重复的。
    • @Chris:发帖后,我意识到了这一点。所以我投票决定关闭它!
    • 视情况而定,他能否通过搜索“旧式”和/或“新式”演员表找到另一个问题?
    • @Erik:它不依赖,因为如果这个问题被标记为重复,它仍然是一个搜索登录页面。如果是骗子,则应将其标记为骗子,而不是因为问题的措辞有点不同而再次给出相同的答案。
    • 嗯,好的,那我也投票关闭。
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 2011-04-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多