new 操作符和 new 操作的区别
来源:互联网 发布:无限恐怖网络剧 编辑:程序博客网 时间:2024/06/05 10:26
转自http://blog.csdn.net/linuxarmsummary/article/details/40787143
操作符(new operator) 和 new操作(operator new)的区别。
当你写这样的代码: 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
- new 操作符和 new 操作的区别
- new 操作符和 new 操作的区别
- new操作符(new operator) 和 new操作(operator new)的区别
- new和malloc操作符的区别
- new和malloc操作符的区别
- new操作符(new operator) 和 new 操作(operator new)和new[]
- new 修饰符和 new 操作符的异同
- new和delete操作符
- new和delete操作
- new和delete操作
- placement new 操作符
- 操作符new
- 重载New操作符
- new操作符
- placement new 操作符
- new 操作符
- 布局NEW操作符
- 布局new操作符
- 【Ubuntu 16】DEB软件包管理
- TouchableHighlight简单使用
- 利用html5调用本地摄像头拍照上传图片
- Java几种集合的遍历方法
- java中的sleep()和wait()的区别
- new 操作符和 new 操作的区别
- Hadoop1.x学习笔记
- Beautiful Arrangement--深度搜索--leetcode
- machine learning
- python 模块使用例子
- 动态规划求解
- Android权限大全
- C++ 向上与向下类型转换
- Java 后端实战——基于 MySQL 的 SQL 优化最佳实践