繁体   English   中英

Bjarne Stroustrup 的 c++ 编程语言 - operator new

[英]The c++ programming language by Bjarne Stroustrup - operator new

“11.2.4 重载 new”部分以:

“arrays 的放置没有特殊语法。也不需要,因为可以通过放置新分配任意类型。但是,可以为数组定义运算符删除”。

如果我理解正确,所说的是对于 arrays,我们使用通常的放置新语法,这将调用适当的运算符new[] 但是,我不明白的是最后一句话。 他想在那里说什么? Afaik,我们可以为 arrays 指定operator newoperator delete

arrays ( operator new[]() ) 有一个特殊的分配器,但它不依赖于特殊的语法。

在下面的代码中

new T();

或者

new (p) T();

编译器将根据T是否为数组类型生成对operator new(...)operator new[](...)的调用。 new-expression在语法上没有区别。

(现在,对于具有运行时大小的new 表达式有一种特殊的语法......但是operator new[]()的调用不限于具有运行时大小的场景)


new相比,对于delete ,相同的指针类型同时兼容标量和数组。 所以你的程序员必须告诉编译器你想要通过哪个

delete p;

对比

delete [] p;

没有基于数组类型识别的自动转换为delete[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM