delete顺序是深度调用,即先new后delete;
#include <string>
class a
{
public:
a(){aData=NULL;}
~a();
void initA(std::string &);
private:
a* aData;
std::string _aStr;
static int count;
};
#include "a.h"
#include <iostream>
int a::count=0;
void a::initA(std::string & str )
{
count++;
_aStr=str;
if (count<3)
{
aData=new a;
str+=count+48;
aData->initA(str);
}
}
a::~a()
{
delete aData;
std::cout<<_aStr<<std::endl;
}
#include "a.h"
int main()
{
a atest;
atest.initA(std::string("你好"));
return 0;
}