为什么允许它重新定义全局operator new(size_t)
?
据我所知,存在相同的默认和默认 operator new(size_t
(在C 标准库中(从C 引物5th中学到(
默认运算符新在全局名称空间中?因为它们处于同一范围,没有重新定义错误吗?
标准(语言支持库 - >动态内存管理(说这些功能:
[new.delete.single]
可替换:C 程序可以使用其中的任何一个定义功能功能签名,从而取代定义的默认版本由C 标准库。
[替换。功能]
使用程序的定义而不是默认版本由实施([support.dynamic](提供。这样的替代者发生在程序启动之前([basic.def.odr],[basic.start](。这程序的声明不得指定为内联。
不需要诊断。
[defns.replacement]
替换功能
非保留功能定义由C 程序提供[注意:只有一个定义因为这样的功能在程序的持续时间内有效执行,因为创建程序([lex.phases](和解决所有翻译单元的定义([basic.link](。 - 终注]