链接:https://www.nowcoder.com/questionTerminal/5760864337084de6891a9944f41e60f4
来源:牛客网
应用程序可以将重载的new/delete定义为全局函数也可以定义为成员函数。当编译器看到一个new/delete表达式,它就开始寻找相应的运算符函数来调用。如果这个被分配内存(或释放内存)的对象是一个class类型,那么编译器首先查找class定义域,包括其基类的定义域。如果在这个class的定义域内找到了一个new/delete成员函数,那么编译器就使用这个函数来执行上文提到的new/delete表达式。假如没有在class定义域内搜索到对应的new/delete成员函数,编译器会在全局作用域内寻找匹配的new/delete函数。如果编译器找到了一个用户自定义的new/delete全局函数,那么编译器就使用这个函数来执行上文提到的new/delete表达式。假如没找到,那么编译器只好使用STL中定义的默认new/delete函数来执行上文提到的new/delete表达式。
编译器对new/delete函数的检索步骤总结如下:
1.class作用域-->找寻自定义实现
2.全局作用域-->找寻自定义实现
3.STL-->找寻默认实现
标签:函数,定义域,成员,编译器,重载,new,class,delete
来源: https://www.cnblogs.com/Eusionblogs/p/14877026.html