当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>More Effective C++:差别new和delete</b>[VC/C++编程]

赞助商链接



  本文“<b>More Effective C++:差别new和delete</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

人们有时仿佛喜好成心使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)的指针,未初始化的内存.(假如你喜好,你能写一种operator new函数,在返回一个指针之前可以初始化内存以存储一些数值,但是普通不这么做.)参数size_t肯定分配多少内存.你能增添额外的参数重载函数operator new,但是第一个参数范例必须是size_t.(有关operator new更多的信息拜见Effective C++ 条款8至条款10.)

你普通不会直接调用operator new,但是一旦这么做,你可以象调用别的函数一样调用它:

void *rawMemory = operator new(sizeof(string));

操作符operator new将返回一个指针,指向一块充足包容一个string范例对象的内存.

就象malloc一样,operator new的职责只是分配内存.它对构造函数一无所知.operator new所理解的是内存分配.把operator new 返回的未经处理的指针传送给一个对象是new操作符的工作.当你的编译器碰见这样的语句:


  以上是“<b>More Effective C++:差别new和delete</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .