为什么允许重新定义全局运算符 new(size_t)?



为什么允许它重新定义全局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](。 - 终注]

最新更新