【发布时间】:2014-02-22 02:33:06
【问题描述】:
所以对于我正在学习的课程,我们正在练习重载运算符,但更具体地说,我们正在为分数(有理数)设计一个课程。我正在玩 try-catch 块,似乎无法让它像我想要的那样工作,也找不到任何关于我无法弄清楚的论坛或文章。我试图在 try-catch 块中创建有理数对象,以确保放入分母的值不是“0”,如果是,我让 catch 块调用对象的解构函数。我得到这个位工作得很好,但似乎没有办法让我稍后在代码中使用在 try-catch 块中创建的对象,即使构造函数成功地为分母分配了一个非零值.有没有办法在 try-catch 块中声明一个对象,以验证它在创建时不会引发异常,但仍然在 try-catch 块之外但仍在的其余代码范围内相同的功能还是没有办法关闭它?
【问题讨论】:
-
一般来说,最好贴出你已经尝试过但遇到困难的代码。
-
您不需要在 catch 子句中为任何本地对象显式调用析构函数。当对象出于任何原因(包括抛出异常)超出范围时会自动调用它们。这就是RAII 起作用的原因。
标签: c++