gpt4 book ai didi

c++ - Try Catch block 创建一个对象

转载 作者:行者123 更新时间:2023-11-28 02:56:08 25 4
gpt4 key购买 nike

因此,对于我正在上的类(class),我们正在练习重载运算符,但更具体地说,我们正在为分数(有理数)设计一个类(class)。我正在玩 try-catch block ,似乎无法让它按我想要的方式工作,也找不到任何关于我无法弄清楚的论坛或文章。我正在尝试在 try-catch block 中创建有理数对象,以确保放入分母的值不是“0”,如果是,我让 catch block 调用对象的析构函数。我让这个位工作得很好,但似乎我无法在稍后的代码中使用在 try-catch block 中创建的对象,即使构造函数成功地为分母分配了一个非零值.有没有办法在 try-catch block 中声明一个对象,以验证它不会在创建时抛出异常,但仍然在 try-catch block 之外但仍在的其余代码范围内相同的功能还是没有办法实现?

最佳答案

try 引入了一个新的范围。您不能在 try 之外使用成功构建的对象,因为它们已经超出范围并已被破坏。这适用于在任何 block 中创建的对象,例如 forif,或与此相关的任何一组 { } 大括号。您要做的是将依赖于对象的代码移动到 try 中。

例如:

try {
Rat rat1(3, 1);
Rat rat2(2, 4);
Rat rat3 = rat1 + rat2;
std::cout << rat3 << std::endl;
}
catch (std::exception& e) {
// above should not throw
}

try {
Rat rat1(3, 1);
Rat rat2(2, 0); // throws
Rat rat3 = rat1 + rat2;
std::cout << rat3 << std::endl;
}
catch (std::exception& e) {
// code here will execute
}

关于c++ - Try Catch block 创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com