当前位置:  开发笔记 > 编程语言 > 正文

关于C++全局运算符new:为什么可以替换它

如何解决《关于C++全局运算符new:为什么可以替换它》经验,为你挑选了1个好方法。

我在VS2005中编写了一个小程序来测试C++全局运算符new是否可以重载.它可以.

#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "string"
#include "new"

using namespace std;

class C {
    public:
        C() { cout<<"CTOR"<

在上面,我调用了operator new的定义.如果我从代码中删除该函数,则调用C:\ Program Files(x86)\ Microsoft Visual Studio 8\VC\crt\src \new.cpp中的operator new.

一切都很好.但是,在我看来,我对operator new的实现不会使new.cpp中的new重载,它会与它发生冲突并违反单一定义规则.为什么编译器不抱怨呢?或者说标准是否因为operator new非常特殊,单定义规则在这里不适用?

谢谢.



1> CB Bailey..:

是的,全球性operator new的特殊之处在于,计划可以为其提供替代实施.

可替换形式是的单个对象和阵列形式operator newoperator delete与"无掷"变体.其他形式,例如新位置不可替换.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有