代码之家  ›  专栏  ›  技术社区  ›  msc

为什么在C++中认为空洞不安全?[副本]

  •  3
  • msc  · 技术社区  · 6 年前

    Bjarne Stroustrup C++常见问题解答网站。我看到了下面这条线。

    • void* (将它们放在底层函数和数据结构中) 如果您真的需要它们并且提供类型安全接口,通常 模板,对您的用户)

    2 回复  |  直到 6 年前
        1
  •  4
  •   πάντα ῥεῖ    6 年前

    为什么在C++中认为空洞不安全?

    因为 void*

    在这种情况下,程序员负责自己正确地解密内存布局,这是一个容易出错的过程,程序员需要确切地知道他们在那里做什么。

    • 避免 无效* (如果您真的需要它们,请将它们放在底层函数和数据结构中,并将它们呈现在 类型安全

    它是关于放松的 类型安全性 具有 .


    最好使用c++中的模板,因为原始类型信息永远不会像使用时那样丢失 泛型 c风格函数使用 无效*

        2
  •  0
  •   Francesco Bertolaccini    6 年前

    在C中提供“泛型”函数或数据结构的标准方法是 void* 作为数据类型,以便任何分配的内存都可以放入其中。这带来了一个不幸的后果,即允许将不同类型的数据放入同一个容器中。在C++中,通过提供“模板”来解决这个问题,它在编译时创建函数和类/结构的类型安全实例,从而确保类型正确性。