#include<iostream>
#include<stdlib.h>
using namespace std;
class quasar{
int quark;
int *series;
public:
quasar(){
quark=0;
}
quasar(int a){
quark=a;
}
void *operator new(size_t){
quasar*p;
p=(quasar*)malloc(sizeof(quasar));
p->series=new int[5];
return p;
}
void operator delete(void *n){
free(n);
}
void input(){
cout<<"enter your valuesn";
for(int i=0;i<5;i++){
cin>>series[i];
}
}
void display(){
for(int i=0;i<5;i++){
cout<<series[i];
}
}
};
int main(){
quasar *q=new quasar;
q->input();
q->display();
cout<<endl;
delete q;
q->display();
}
在上面的代码中,当我重载新的和删除的运算符时;"系列";。那么,当我删除对象指针时,分配给数据成员指针的内存(即该代码中的序列(是否也会被释放?
不,序列不会被删除,您必须显式删除指针。你可以在这样的析构函数中做到这一点:
~quasar() {
delete[] series;
}
您也只能将其添加到删除运算符delete[] series;
中,但只有当您使用类星体对象的指针时,它才会被删除。
您可能想先调用q->display()
,然后将其删除,或者您将访问一个已删除的对象。