当前位置: 首页 > news >正文

网站怎么做好 优帮云投票链接制作哪家服务好

网站怎么做好 优帮云,投票链接制作哪家服务好,wordpress图片要求,免费网络推广平台有哪些new operator new operator是我们常用的new。 new 和 delete 是用来在 堆上申请和释放空间的 #xff0c;是 C 定义的 关键字#xff0c;和 sizeof 一样。 实际 new / delete 和 malloc / free 最大的区别是#xff0c;前者对于 自定义类型 除了可以开辟空间#xff0c;…new operator new operator是我们常用的new。 new 和 delete 是用来在 堆上申请和释放空间的 是 C 定义的 关键字和 sizeof 一样。 实际 new / delete 和 malloc / free 最大的区别是前者对于 自定义类型 除了可以开辟空间还会调用构造和析构函数 分配内存,如果类A重载了operator new那么将调用A::operator new(size_t )来完成如果没有重载就调用::operator new(size_t )即全局new操作符来完成 调用构造函数生成类对象 返回相应指针 1.operator new、operator delete就是对malloc和free的封装 2.operator new中调用malloc开辟空间失败后改为抛异常处理这种处理更符合C处理错误的方式 new 的原理 Ⅰ. 调用 operator new 函数申请空间 Ⅱ. 在申请的空间上执行构造函数完成对象的构造 delete 的原理 Ⅰ. 在空间上执行析构函数完成对象中资源的清理工作 Ⅱ. 调用 operator delete 函数释放对象的空间 new T[N] 的原理 Ⅰ. 调用 operator new[] 函数在 operator new[] 中实际调用 operator new 函数完成 N 个对象空间的申请 Ⅱ. 在申请的空间上执行 N 次构造函数 delete[] 的原理 Ⅰ. 在释放的对象空间上执行 N 次析构函数完成 N 个对象中资源的清理 Ⅱ. 调用 operator delete[] 释放空间实际在 operator delete[] 中调用 operator delete 来释放空间 operator new operator new是一个操作符和 -操作符一样作用是分配空间。我们可以重写它们修改分配空间的方式。 operator new返回值必须是void*。第一个参数必须是size_t void* operator new (std::size_t size) throw (std::bad_alloc); void* operator new (std::size_t size, const std::nothrow_t nothrow_constant) throw(); 在下面的例子中我们使用重载了三个operator new方法 并分别调用。 #include iostream #include string #include malloc.h using namespace std;//student class class Stu { public:Stu(string name, int age){cout call Stu class constructor endl; name_ name;age_ age;}; public:void print() const{cout name name_ std::endl;cout age age_ std::endl;};void* operator new(size_t size){std::cout call operator new std::endl;return malloc(size);}void* operator new(size_t size, int num){std::cout call operator new with int std::endl;return malloc(size);} void* operator new(size_t size, char c){std::cout call operator new with char std::endl;return malloc(size);} private:string name_;int age_; }; int main() {Stu* stu1 new Stu(a, 10);Stu* stu2 new(1) Stu(a, 10);Stu* stu3 new(c) Stu(a, 10); } placement new placement new是operator new的一种重载形式其作用是可以在指定的内存地址创建对象。 placement new返回值必须是void*。第一个参数必须是size_t 第二个参数是void*。 void* operator new (std::size_t size, void* ptr) throw(); 下面的是一个关于placement new的调用例子: #include iostream #include string #include malloc.h using namespace std;//student class class Stu { public:Stu(string name, int age){name_ name;age_ age;}; public:void print() const{cout name name_ std::endl;cout age age_ std::endl;};void* operator new(size_t size, void* p){std::cout placement new std::endl;return p;}; private:string name_;int age_; }; int main() {void* stu1 (Stu*)malloc(sizeof(Stu));new (stu1) Stu(stu1, 10);((Stu*)stu1)-print(); } 由于placement new可以在一个指定的位置创建对象因此在STL中有很广泛的运用 例子vector容器初始化的时候会使用allocator申请一定的内存当使用push_back放入对象时 就可以使用placement new在申请的位置创建对象。 结论 对于new operator new 和 placement new三者的区别 我们总结如下 new new是一个关键字不能被重载。 new 操作符的执行过程如下 调用operator new分配内存  调用构造函数生成类对象 返回相应指针。 operator new operator new就像operator  一样是可以重载的。 如果类中没有重载operator new那么调用的就是全局的::operator new来完成堆的分配。 同理operator new[]、operator delete、operator delete[]也是可以重载的。 placement new placement new和operator new并没有本质区别。它们都是operator new操作符的重载只是参数不相同。 placement并不分配内存只是返回指向已经分配好的某段内存的一个指针。因此不能删除它但需要调用对象的析构函数。 如果你想在已经分配的内存中创建一个对象使用new时行不通的。 也就是说placement new允许你在一个已经分配好的内存中栈或者堆中构造一个新的对象。原型中void* p实际上就是指向一个已经分配好的内存缓冲区的的首地址。
http://www.tj-hxxt.cn/news/136586.html

相关文章:

  • 江苏建设准考证打印在哪个网站简单的购物网站怎么做
  • 网站设计基本流程第一步局域网中做网站
  • 网站建设与管理认识广西圣泰建设工程有限公司网站
  • 辽宁食品 中企动力网站建设住房和城乡建设行业证书
  • 工作网站建设中布线费用账务处理做网站要注册公司吗
  • 做打折的淘宝小卖家的网站重慶网站开发
  • 网站制作报价维持地建网络挣钱最快的小游戏
  • 北京百度糯米团购有做网站的电话吗wordpress多文章
  • 网站建设的经费东台网络推广
  • 网站搜索优化怎么做网络电商培训课程网站设计
  • 京东在线购物网站php 手机网站开发教程
  • 公司网站属于信息化建设吗做网站如何分工
  • 建设田达摩托车官方网站小说百度搜索风云榜
  • 做公司网站都需要什么博山信息港
  • 响应式外贸网站价格朝阳网站建设 高碑店
  • 微网站开发不用模板网站的百度地图怎么做
  • 一个网站需要服务器吗桂林论坛网app
  • 黔东南手机网站建设国外教做蛋糕的网站
  • 怎么查网站注册信息浙江建站优化品牌
  • 南康建设局官方网站抖音seo优化系统招商
  • 贵州安顺建设主管部门网站ui界面
  • 城市建设者官方网站wordpress域名地址设置方法
  • 宁波慈溪网站建设电力行业企业网站建设
  • 可以做锚文本链接的网站搭建一个微信小程序要多少钱
  • 嘉祥做网站如何做电影网站
  • flash国外网站wordpress实现视频播放
  • 抚州律师网站建设哪个网站找到做箱包厂外发的
  • 一个网站怎么做软件网站空间多少
  • 宁夏众擎达网站建设小程序开发教程
  • 淘宝建设网站虚拟主机评测