条款9:避免隐藏标准形式的new
来源:互联网 发布:ubuntu查看系统分区 编辑:程序博客网 时间:2024/06/07 08:18
因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数。
然而如果在类里增加了一个带多个参数的operator new函数,结果就有可能令人大吃一惊。
#include <iostream>
using namespace std;
class x
{
public:
static void* operator new(size_t size,new_handler p){}
};
void specialerrorhandler(){}
int main()
{
x *px1 = new (specialerrorhandler)x;
x *px2 = new x; //出错
}
上面的x *px2 = new x;出错,因为在类里定义了一个称为“operator new”的函数后,会不经意地阻止了对标准new的访问。
- 条款9:避免隐藏标准形式的new
- Effective C++:条款9: 避免隐藏标准形式的new
- 条款9:避免隐藏标准形式的new
- effective C++笔记之条款9、10:避免隐藏标准形式的new、如果写了operator new 就要同时写operator delete
- Effective C++ 第二版 8) 写operator new 和operator delete 9) 避免隐藏标准形式的new
- operator new之避免覆盖标准形式的new/delete的“模板”类
- 条款5:使用相同的形式的new和delete
- Effective C++条款5:对应的new和delete要采用相同的形式
- 条款5:对应的new和delete要采用相同的形式
- effective C++笔记之条款5:对应的new和delete要采用相同的形式
- Effective C++:条款5:对应的new和delete要采用相同的形式
- 条款5:对应的new和delete要采用相同的形式 [内存管理]
- 条款16:成对使用new和delete时要采取相同的形式
- 条款16 成对使用new和delete时要采用相同的形式
- 条款16:成对使用new和delete时要采取相同的形式
- 条款16:成对使用new和delete的时候要采取相同形式
- new的实际形式
- 条款5:对应的new和delete要采用相同的形式 (第二章 内存管理)
- udev规则
- 条款7:预先准备好内存不够的情况
- 条款8:写operator new和operator delete时要遵循常规
- 安卓开发-加载图片
- Android 仿网易新闻v3.5:上下滑动的引导页
- 条款9:避免隐藏标准形式的new
- 条款10:如果写了operator new就要同时写operator delete
- linux_shell脚本
- 条款11:为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 (第三章 构造函数,析构函数和赋值操作符)
- 修改linux文件权限命令:chmod
- 条款12:尽量使用初始化而不要在构造函数里赋值
- C#中char[]与string之间的转换
- 条款13:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 条款14:确定基类有虚析构函数