设为首页 加入收藏

TOP

effectiveC++(九)(二)
2010-12-26 23:04:28 】 浏览:5915
Tags:effectiveC

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的访

问。条款50解释了为什么会这样,这里我们更关心的是如何想个办法避免这个问题。

一个办法是在类里写一个支持标准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
                 &nbs

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇effectiveC++(十) 下一篇effectiveC++(八)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目