# include
# include
使用名称空间性病;
{类学生公共:
学生(int n,字符串nam)//定义构造函数
{
cout & lt; & lt;“构造函数——”& lt; & lt;n & lt; & lt;endl;
num=n;
名称=南;
}
~学生()//定义析构函数
{
cout & lt; & lt;“析构函数——”& lt; & lt;num & lt; & lt;endl;
}
空白get_data();私人:
int num;
字符串名称;
};
空白学生::get_data ()
{
如果(num==0)//如果num=0,抛出int型变量num
{
扔num;
}
其他//如果num不等于0,输出num,名字
{
cout & lt; & lt;num & lt; & lt;”“& lt; & lt;名字& lt; & lt;endl;
}
cout & lt; & lt;“在get_data ()& lt; & lt;endl;
}
空白有趣()
{
学生stud1(1101年,“谭”);
stud1.get_data ();
学生stud2(0,“李”);
stud2.get_data ();}
int主要()
{
cout & lt; & lt;“主要”开始& lt; & lt;endl;//表示主函数开始了
cout & lt; & lt;“叫有趣()”& lt; & lt;endl;//调用有趣的()函数
尝试{
有趣();}
抓住(int n)
{
cout & lt; & lt;" num=" & lt; & lt;n & lt; & lt;”,错误!”& lt; & lt;endl;//num=0出错
}
cout & lt; & lt;“主要”& lt; & lt;endl;//表示主函数结束
系统(“暂停”);
返回0;
}
例2:在上题的基础上进行变形,分析执行过程,由于异常处理调用了哪些析构函数。
# include
# include
使用名称空间性病;
{类学生公共:
学生(int n,字符串nam)//定义构造函数
{
cout & lt; & lt;“构造函数——”& lt; & lt;n & lt; & lt;endl;
num=n;
名称=南;
}
~学生()//定义析构函数
{
cout & lt; & lt;“析构函数——”& lt; & lt;num & lt; & lt;endl;
}
空白get_data();私人:
int num;
字符串名称;
};
空白学生::get_data ()
{
如果(num==0)//如果num=0,抛出int型变量num
{
扔num;
}
其他//如果num不等于0,输出num,名字
{
cout & lt; & lt;num & lt; & lt;”“& lt; & lt;名字& lt; & lt;endl;
}
cout & lt; & lt;“在get_data ()& lt; & lt;endl;
}
空白有趣()
{
学生stud1(1101年,“谭”);
stud1.get_data ();
尝试{
学生stud2(0,“李”);
stud2.get_data ();}
抓住(int n)
{
cout & lt; & lt;" num=" & lt; & lt;n & lt; & lt;”,错误!”& lt; & lt;endl;//num=0出错
}
}
int主要()
{
cout & lt; & lt;“主要”开始& lt; & lt;endl;//表示主函数开始了
cout & lt; & lt;“叫有趣()”& lt; & lt;endl;//调用有趣的()函数
有趣();
cout & lt; & lt;“主要”& lt; & lt;endl;//表示主函数结束
系统(“暂停”);
返回0;
}
”后,再执行捕捉语句,输出“”,有趣的函数执行完毕,在流程转回主函数之前先调用stud1的析构函数、输出“”,最后执行主要函数中最后一行cout语句,输出“主要”结束。