gpt4 book ai didi

c++ - 为什么必须在C++中显式类型转换malloc和calloc?

转载 作者:行者123 更新时间:2023-12-01 15:11:10 24 4
gpt4 key购买 nike

我最近读了一篇文章,该文章说在C中没有必要显式类型转换malloc和calloc,但在C++中则是强制性的。为什么会这样呢?谁能解释?

最佳答案

因为在C语言中,您经常需要在各种情况下使用void *。其中一些是用于回调的cookie-当您提供指向用户数据的指针时,您将无法知道该数据类型。或者像qsort()这样的通用函数,它们必须在不事先知道其类型的情况下使用各种数据。尽管在C++中,您不需要经常使用void *,而且在安全良好的代码中,根本不需要使用它们,因为您有模板,因此可以使用未知类型编写通用代码而无需进行不安全的转换。因此,C++的创建者希望激发数据类型的正确使用,并确保开发人员在进行不安全的操作时了解他/她/它/他们在做什么。

malloc()calloc()返回void *时,您必须在C++中显式转换它们。请注意,您不应该在C++中使用它们,而应使用operator new-已经返回正确的指针类型,并且您不需要强制转换。甚至在现代C++中,甚至不建议直接调用new

关于c++ - 为什么必须在C++中显式类型转换malloc和calloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59399534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com