new operator //new操作符
operator new //操作符new,只负责开辟空间
placement new //定位new
#include<iostream>
using namespace std;
/*
new operator //new操作符
operator new //操作符new,只负责开辟空间
placement new //定位new
*/
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 = ""){
cout<<"Create String Object!"<<endl;
if(str == NULL){
data = new char[1]; //C++用new比malloc更加方便
data[0] = '\0';
}
else{
data = new char[strlen(str) + 1]; //+1是为了存末尾的'\0'
strcpy(data,str);
}
}
~String(){
cout<<"Free String Object!"<<endl;
delete []data;
data = NULL;
}
private:
char *data;
};
//new operator:先调用operator new开辟空间,再构造对象,再调用构造函数初始化对象
//delete operator:先析构对象,再释放空间
void main(){
//String s("Hello")