new和delete
一、new表达式工作步骤
- 调用名为operator new的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象
- 运行该类型的一个构造函数初始化对象
- 返回指向新分配并构造的构造函数对象的指针
二、delete表达式工作步骤
- 调用析构函数,回收对象中数据成员所申请的资源
- 调用名为operator delete的标准库函数释放该对象所用的内存
三、关于operator new/delete
#include <string.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
class Student
{
public:
Student(int id, const char * name)
: _id(id)
, _name(new char[strlen(name) + 1]())
{
strcpy(_name, name);
cout << "Student()" << endl;
}
~Student()
{
delete [] _name;
cout << "~Student()" << endl;
}
//默认是静态函数
//作为成员函数也没有this指针
voi