C++基础:new的三种形式详解
来源:互联网 发布:复杂网络 混沌 编辑:程序博客网 时间:2024/06/07 22:21
new的三种形式详解:
1.new operator : new操作符 《=====》 ( operator new 开辟空间 ) + (调动构造函数 )
2.operator new : 操作符new 只开辟空间
1.new operator : new操作符 《=====》 ( operator new 开辟空间 ) + (调动构造函数 )
2.operator new : 操作符new 只开辟空间
3.placement new : 定位new
例子:
<span style="font-size:18px;">#include <iostream>using namaespace std;void* operator new(size_t sz) //operator new 只开辟空间{void *p = malloc(sz);return p;}void operator delete(void *p) //operator delete 只释放空间{free(p);}void operator new[](size_t sz){void *p = malloc(sz);return p;}void operator delete[](void *p){free(p);}class String{public:String(const char *str = ""){if(str == NULL){data = new char[1];data[0] = '\0';}else{data = new char[strlen(str)+1];strcpy(data,str);}}~String(){delete []data;data = NULL;}private:char *data;};void* operator new(size_t sz, int *d, int pos){return &d[pos];}int main(){String *ps = new String("Hello"); //new operatordelete ps; //上面的两行等于下面的四行组合String *ps = (String *)operator new(sizeof(String)); //operator newnew(ps)String("Hello"); //placement newps->~String();operator delete();//new(p)类型(初始值) //placement newint ar[10];new(ar)int(10); //ar[0] = 10;new(ar,3)int(10); //ar[3] = 10;return 0;}</span>
0 0
- C++基础:new的三种形式详解
- operator new的三种运算形式
- new的三种形式(二十)
- C++new() 的六种重载形式
- a^b%c 的三种形式
- 【C++】C++的三种new
- php数组(array)输出的三种形式详解
- C语言中整数的三种不同表达形式
- C语言main函数的三种形式
- new的六种重载形式
- new的六种重载形式
- new的六种重载形式
- new的六种重载形式
- new的六种重载形式
- new的六种重载形式
- new的六种重载形式
- c++ new 重载的几种形式
- new的实际形式
- iOS kvc和kvo简介
- 文件操作工具类 内部文件 外部文件
- Hadoop笔记四之Hdfs文件读写操作
- STL——stack栈
- pointerIndex out of range--IllegalArgumentException
- C++基础:new的三种形式详解
- 103.项目视图分析工具Reveal集成使用教程
- 关于攻读计算机研究生
- 算法学习(一):递归与分治策略(2)
- 剑指offer 42题 【知识迁移能力】翻转单词顺序列
- Java烧脑驴游(十二)--日期时间
- I/O多路复用,零拷贝,高并发聊天室demo
- ViewPagerIndactor
- 动态规划--最长公共子序列