gpt4 book ai didi

c++ - new() 和 delete() 作为 C++ 中的运算符?

转载 作者:太空狗 更新时间:2023-10-29 19:53:30 24 4
gpt4 key购买 nike

new() 和 delete() 在 C++ 中作为运算符实现的用途或原因是什么?使其成为运算符而不是函数有什么优势?

最佳答案

new 运算符不能是函数,因为它接受类型作为参数。您不能将 new foo_type 编写为函数调用,因为 foo_type 不是生成值的表达式,而是类型名称。

delete 运算符可以是针对不同指针类型重载的函数,以及用于 delete [] 语义的额外可选 bool 参数.为什么有 delete 运算符可能是为了与其对应的 new 对称。

也就是说,模板函数可以将类型作为模板参数。但是 newdelete 运算符历来先于模板。

此外,可以编写一个函数,它采用类型的原型(prototype)实例而不是类型,从中构造对象:newobj(m_class(constructor_arg))。此 newobj 针对不同的类型进行了重载。它分配空间,将构造复制到其中,然后返回对象。

所以最终,设计反射(reflect)了设计师的品味和奇思妙想。

运算符和函数(以及语句、声明等)之间的分离本身在语言设计中并不是绝对必要的。

关于c++ - new() 和 delete() 作为 C++ 中的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477743/

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