[英]Mistake with bind in “The C++ Programming Language [4th Edition] - Bjarne Stroustrup”
[英]The c++ programming language by Bjarne Stroustrup - operator new
“11.2.4 重载 new”部分以:
“arrays 的放置没有特殊语法。也不需要,因为可以通过放置新分配任意类型。但是,可以为数组定义运算符删除”。
如果我理解正确,所说的是对于 arrays,我们使用通常的放置新语法,这将调用适当的运算符new[]
。 但是,我不明白的是最后一句话。 他想在那里说什么? Afaik,我们可以为 arrays 指定operator new
和operator 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.