关于构造函数和析构函数的问题
以下程序为什么是输出
constructing Randy
copy constructing
aa
Destructing
aa
Destructing
aa
#include "stdafx.h"
#include<iostream>
using namespace std;
class Person
{
char *pName;
public:
Person(char *pN="noName")
{
cout<<"constructing "<<pN<<"\n";
pName=new char[strlen(pN) + 1];
if(pName)
{
strcpy(pName,pN);
}
}
Person(const Person & s)
{
cout<<"copy constructing"<<s.pName<<"\n";
pName=new char[strlen(s.pName)+1];
if(pName)
{
strcpy(pName,s.pName);
}
}
void Set(const char *name)
{
if(!pName)
{
pName=new char[strlen(name)+1];
}
else if(pName)
{
strcpy(pName,name);
}
}
~Person()
{
cout<<"Destructing "<<pName<<"\n";
delete []pName;
}
};
void main()
{
Person p1("Randy");
p1.Set("\naa");
Person p2(p1);
getchar();
return;
}