条款九: 避免隐藏标准形式的new
因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数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;                                     // 也正确
条款九: 避免隐藏标准形式的new的更多相关文章
- Effective C++ 第二版 8) 写operator new 和operator delete 9) 避免隐藏标准形式的new
		条款8 写operator new 和operator delete 时要遵循常规 重写operator new时, 函数提供的行为要和系统缺省的operator new一致: 1)正确的返回值; 2 ... 
- 计算A+B及其结果的标准形式输出
		题目: 代码链接 解题思路: 首先,读懂题目,题目要求我们计算两个整型数a,b之和,这是简单的加法计算,与平常的题目一般无二.但是此题的不同在于要求我们输出的数必须是标准形式,题目也对标准形式做了相应 ... 
- 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)
		(写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ... 
- JSP——九大隐藏对象之四大域对象
		你一定在你的Jsp文件中的监本片段中使用过以下九个对象的几种:out.config.page.pageContext.exception.request.response.application.se ... 
- 隐藏Console形式无效(继续1)
		[2014/10/19 23:57 ] :由port主机遥控. 该程序的执行后,计划自己主动开放之机999port,其他计算机将能够通过999port机器的操作. 程序中使用的到的命令: telne ... 
- CSS(九)元素隐藏和利弊
		隐藏元素.无法点击,这之间有什么关系呢? 可以配合我写的 html 食用:https://github.com/dirstart/ScriptOJ/blob/master/OJ_CSS/4.css%E ... 
- 《Java并发编程实战》笔记-状态依赖方法的标准形式
		void stateDependentMethod() throws InterruptedException { //必须通过一个锁来保护条件谓词 synchronized(lock) { whil ... 
- Effective C++ 条款九、十  绝不在构造和析构过程中调用virtual函数|令operator=返回一个reference to *this
		1.当在一个子类当中调用构造函数,其父类构造函数肯定先被调用.如果此时父类构造函数中有一个virtual函数,子类当中也有,肯定执行父类当中的virtual函数,而此时子类当中的成员变量并未被初始 ... 
- java中的九大隐藏变量.
		javax.servlet.jsp.JspWriter类型,代表输出流的对象.作用域为page(页面执行期) request:javax.servlet.ServletRequest的子类 ... 
随机推荐
- rfcn结构
			这是rfcn模型的rpn网络部分: 这是rfcn模型的rfcn网络部分: 可以看到rpn网络使用的最后一层特征提取层是resnet的res4f,rfcn网络使用的最后一层特征提取层是resnet的re ... 
- node.js编译less文件
			大多数文章对于到底怎样编译less文件并没有一个详细的说明,清一色的grunt命令,看得也是晕晕的,所以也就有了这篇手记的存在. 步入正题 1.安装配置好sublime text3(包括各种实用插件) ... 
- Handler和内部类的正确用法
			PS:本文摘抄自<Android高级进阶>,仅供学习使用 Android代码中涉及线程间通信的地方经常会使用Handler,典型的代码结构如下. public class HandlerA ... 
- JAVA基础——设计模式之装饰者模式
			装饰模式 : 对新房进行装修并没有改变房屋的本质,但它可以让房子变得更漂亮.更温馨.更实用. 在软件设计中,对已有对象(新房)的功能进行扩展(装修). 把通用功能封装在装饰器中,用到的地方 ... 
- 启动web项目卡在Initializing Spring root WebApplicationContext不动
			这几天在和同学一起做一个电教器材管理系统的Web项目,用SVN互通,在此记录下经常遇到的bug. Bug: 启动项目一直卡在Initializing Spring root WebApplicatio ... 
- luogu 4884 多少个1?
			题目描述: 给定整数K和质数m,求最小的正整数N,使得 11111⋯1(N个1)≡K(mod m) 说人话:就是 111...1111 mod m =K 题解: 将两边一起*9+1,左边就是10^an ... 
- [模板] Splay
			欠了好久的Splay,以后就它了. 默写真不容易,过几天估计就忘了.. 整个Splay真的精妙,不拖泥带水那种.. 前驱后继之所以不能用rk转到根,是因为这个数不一定存在.. kth中<=老忘记 ... 
- linux学习笔记 磁盘存储之磁盘的基本组成结构
- linux ping-测试主机之间网络的连通性
			博主推荐:更多网络测试相关命令关注 网络测试 收藏linux命令大全 ping命令用来测试主机之间网络的连通性.执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问 ... 
- c++基础_特殊的数字
			#include <iostream> #include <math.h> using namespace std; int main(){ ;i<;i++){ ; )% ... 
