在异常处理中处理析构函数

# 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;

}

在异常处理中处理析构函数”> <img src=

例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语句,输出“主要”结束。


在异常处理中处理析构函数