首页 相关文章 More Effective C++:不同new和delete

More Effective C++:不同new和delete


  人们有时似乎喜欢故意使C++语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。
  
  当你写这样的代码:
  
  string *ps = new string("Memory Management");
  你使用的new是new操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能总是一样的。它要完成的功能分成两部分。第一部分是分配足够的内存以便容纳所需类型的对象。第二部分是它调用构造函数初始化内存中的对象。new操作符总是做这两件事情,你不能以任何方式改变它的行为。
  
  你所能改变的是如何为对象分配内存。new操作符调用一个函数来完成必需的内存分配,你能够重写或重载这个函数来改变它的行为。new操作符为分配内存所调用函数的名字是operator new。
  
  函数operator new 通常这样声明:
  
  void * operator new(size_t size);
  返回值类型是void*,因为这个函数返回一个未经处理(raw)的指针,未初始化的内存。(假如你喜欢,你能写一种oper...[ 查看全文 ]

2016-02-19 标签:

More Effective C++:不同new和delete的相关文章

手机页面
收藏网站 回到头部