#include<iostream>
#include<string.h>
using namespace std;
class point
{
int a,b;
char *ptr;
int size;
int arr[3];
public:
point(int j,int k,char *s,int m){
a=j;
b=k;
size=strlen(s)+1;
ptr=new char[size];
strcpy(ptr,s);
for(int x=0;x<3;x++)
arr[x]=x+m;
cout<<"Cons"<<endl;
}
~point()
{
cout<<"DES"<<endl;
};
void delet()
{
delete []ptr;
}
void show()
{
cout<<a<<' '<<b<<' ';
cout<<ptr<<' ';
for(int x=0;x<3;x++)
cout<<arr[x]<<' ';
cout<<endl;
}
};
int main()
{
point p1(6,9,"You",2);
p1.show();
point p2=p1;
p2.show();
point p3(p2);
p3.show();
p1.delet();
}
Cons
6 9 You 2 3 4
6 9 You 2 3 4
6 9 You 2 3 4
DES
DES
DES
--------------------------------
Process exited after 6.395 seconds with return value 0
请按任意键继续. . .
定义构造函数,建立对象p1,调用构造函数,建立对象p2、p3不调用构造函数,直接将对象p1的数据成员复制到p2、p3内,从
而对p2、p3初始化。
存在三个对象,调用三次析构函数,调用一次构造函数,那只调用一次new,所以只需调用一次delete.