new操作符(new operator) 和 new操作(operator new)的区别。
2012-11-13 10:11
417 查看
当你写这样的代码: 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 操作符。这个操作符就象 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[]
- C++中的operator new与new operator区别
- 内存操作:new, delete, mallco, free的区别
- new operator、operator new 、placement new三者之间的区别与联系
- C++中operator new 和 new operator小结以及对new 和 delete初步理解
- malloc和new的区别,new和operator new的区别,分配器介绍
- new operator、operator new 、placement new三者之间的区别与联系
- [C++] operator new与new operator 的区别 [百面]
- c++ new operator与operator new的区别
- new 操作符和 new 操作的区别
- [C++] operator new与new operator 的区别 [百面]
- C++ 中 new 操作符内幕:new operator、operator new、placement new
- new 操作符和 new 操作的区别
- operator new, new operator, delete new, new delete
- 【C++ placement new、new、operator new】的区别
- new 、operator new 和 placement new 区别
- new 、operator new 和 placement new 区别
- c++ new operator与operator new的区别
- [C++空间分配]new运算符、operator new、placement new的区别于联系