new操作符(new operator) 和 new操作(operator new)的区别
来源:互联网 发布:算法分析与复杂性理论 编辑:程序博客网 时间:2024/06/05 07:26
当你写这样的代码: string *ps = new string("Memory Management");
你使用的 new 是 new 操作符。这个操作符就象 sizeof 一样是语言内置的,你不能改变它的含义,它的功能总是一样的。它要完成的功能分成两部分。第一部分是分配足够的内存以便
容纳所需类型的对象。第二部分是它调用构造函数初始化内存中的对象。new操作符总是做这两件事情,你不能以任何方式改变它的行为。
你所能改变的是如何为对象分配内存。new 操作符调用一个函数来完成必需的内存分配,你能够重写或重载这个函数来改变它的行为。new 操作符为分配内存所调用函数的名字是 operator new
函数 operator new 通常这样声明:
void * operator new(size_t size); //参数 size_t确定分配多少内存
返回值类型是 void*,因为这个函数返回一个未经处理(raw)的指针,未初始化的内存
你一般不会直接调用 operator new,但是一旦这么做,你可以象调用其它函数一样调用它:
void *rawMemory = operator new(sizeof(string));
操作符operator new将返回一个指针, 指向一块足够容纳一个string类型对象的内存。
就象 malloc 一样,operator new 的职责只是分配内存。它对构造函数一无所知。operator new所了解的是内存分配
void *memory = // 得到未经处理的内存
operator new(sizeof(string)); // 为 String对象
call string::string("Memory Management") //初始化
on *memory; // 内存中 // 的对象
string *ps = // 是 ps指针指向
static_cast<string*>(memory); // 新的对象
- new操作符(new operator) 和 new操作(operator new)的区别
- new操作符(new operator) 和 new 操作(operator new)和new[]
- operator new和 new operator的区别(More Effective C++_8(运算符))
- 区分new operator(即new expression)和operator new
- operator new和operator new[]区别?
- new 、operator new 和 placement new 区别
- new 、operator new 和 placement new 区别
- new 、operator new 和 placement new 区别
- operator new与new operator 的区别
- "operator new" 和"new operator "
- operator new 和new operator
- operator new和new operator
- new 和operator new
- operator new和new operator的比较
- new operator /operator new 和placement new
- 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](上)
- 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](下)
- C++内存分配操作符new(new operator),operator new,placement new详解
- 深入理解java异常处理机制
- Android webview交互
- windows server 2003 sp2 x64安装apache+php
- iOS 应用内调用外部浏览器
- Spring控制反转(IoC)的理解
- new操作符(new operator) 和 new操作(operator new)的区别
- 分布式与集群的区别
- Android WebView
- SqlCommand.DeriveParameters failed
- Java编程经验之谈(1)
- Bellman-Ford的队列优化
- day01
- cpuburn
- Java学习之路0714(一)(markDown标签的简单使用,Java环境配置、Java基本数据类型))