1 #include <iostream>
2 #include <stdlib.h>
3 using namespace std;
4 class Tdate
5 {
6 public:
7 Tdate(int mm=0,int dd=0,int yy=0);
8 ~Tdate()
9 {
10 cout<<"Call Destructor.\n";
11 }
12 void Tdate::SetDate(int m,int d,int y);//构造函数参数设置了缺省值
13 void print()
14 {
15 cout<<"month="<<month<<",day="<<day<<",year="<<year<<"\n";
16 }
17 protected:
18 int month,day,year;
19 };
20 Tdate::Tdate(int mm,int dd,int yy)
21 {
22 month=mm;
23 day=dd;
24 year=yy;
25 cout<<"Call Constructor.\n";
26 }
27 void Tdate::SetDate(int m,int d,int y)
28 {
29 if(m>0&&m<13)
30 month=m;
31 if(d>0&&d<32)
32 day=d;
33 if(y>0&&y<3000)
34 year=y;
35 }
36 int main()
37 {
38 Tdate *pd1,*pd2;
39 pd1=new Tdate(1,1,2000);//创建动态对象,会调用构造函数
40 pd1->print();//只能用指针去访问该对象的成员
41 pd2=new Tdate(12,31,2007);//创建动态对象,会调用构造函数
42 if(!pd2)//如果分配堆内存不成功
43 {
44 cout<<"Heap error!\n";//输出错误信息
45 exit(1);//终止程序运行
46 }
47 else//如果分配堆内存成功
48 pd2->SetDate(8,8,2008);//调用函数重设日期
49 pd2->print();
50 delete pd1;//删除动态对象,会调用析构函数
51 delete pd2;//删除动态对象,会调用析构函数
52 }