因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数

class x {
public:
void f(); // operator new的参数指定一个
// new-hander(new的出错处理)函数
static void * operator new(size_t size, new_handler p);
}; void specialerrorhandler(); // 定义在别的地方 x *px1 =
new (specialerrorhandler) x; // 调用x::operator new x *px2 = new x; // 错误!

在类里定义了一个称为“operator new”的函数后,会不经意地阻止了对标准new的访问。解决办法是在类里写一个支持标准new调用方式的operator new,它和标准new做同样

的事。这可以用一个高效的内联函数来封装实现。

class x {
public:
void f(); static void * operator new(size_t size, new_handler p); static void * operator new(size_t size)
{ return ::operator new(size); }
}; x *px1 =
new (specialerrorhandler) x; // 调用 x::operator
// new(size_t, new_handler) x* px2 = new x; // 调用 x::operator
// new(size_t)

另一种方法是为每一个增加到operator new的参数提供缺省值(见条款24):

class x {
public:
void f(); static
void * operator new(size_t size, // p缺省值为0
new_handler p = ); //
}; x *px1 = new (specialerrorhandler) x; // 正确 x* px2 = new x; // 也正确

最新文章

  1. 【UOJ #13】【UER #1】跳蚤OS
  2. LeetCode Paint House
  3. 用Nginx+Lua(OpenResty)开发高性能Web应用
  4. 一些不起眼但非常有用的 Vim 命令
  5. [No00000E]PPT快捷键大全 PowerPoint2013/2010/2007/2003常用快捷
  6. .net程序员转行做手游开发经历(四)
  7. java8 引进lamda
  8. [LintCode] Binary Tree Paths 二叉树路径
  9. 20145224&20145238《信息安全系统设计基础》实验五
  10. 剑指Offer:面试题23——从上往下打印二叉树(java实现)
  11. tomcat的配置详解:[1]tomcat绑定域名
  12. Yii 的AR单行数据自动缓存机制
  13. PHP MySQL Where 子句 之Where
  14. Javascript Base64编码与解码
  15. python的web开发环境Django配置
  16. Swift tableview自带的刷新控件
  17. centos下安装nginx并部署angular应用
  18. Redis 设计与实现 (九)--Lua
  19. [20180828]exadata--豆腐渣系统的保护神.txt
  20. 【AtCoder】ARC077

热门文章

  1. 黑马程序员----java基础:String与StringBuffer及基本数据类型包装类
  2. golang zip 解压、压缩文件
  3. SpringCloud 微服务框架
  4. chpasswd - 成批更新用户的口令
  5. anchor_target_layer层其他部分解读
  6. vue全选和取消全选
  7. JS 水印图片合成实例页面
  8. 利用filter过滤去重
  9. MapReduce实例——查询缺失扑克牌
  10. MYSQL每日一学 - 时间间隔表达式