与c++的Exception throw语句混淆
Confused with C++ Exception throw statement
我是c++的新手,所以很抱歉问了非常愚蠢的问题,但我对c++异常处理机制中的throw语句感到困惑。
- 在下面的代码中,为什么我们调用与类的名字吗?
- 是构造函数吗? 是否创建
class Except
的实例?我不明白这里的语法。
class A
{
public:
class Except{};
void foo() { throw Except(); }
};
int main()
{
A a;
try
{
a.foo();
}
catch(Except E)//exception handler
{
cout << "Catched exception" << endl;
}
}
是构造函数吗?
是的。
是否创建了Except类的实例?
是的了。这两个陈述都是正确的。
classname( arguments )
其中classname
是一个类的名称,构造了这个类的一个实例,将任何可选的arguments
传递给适当的类构造函数。
当然,构造函数是类方法,其名称与类名称相同。这就是为什么你的两个问题都有相同的答案,"是"。
创建类的临时实例。通常,classname
用于声明一个变量,该变量代表该类的一个实例,但是该语法构造一个类的临时实例,该实例在表达式结束时被销毁(通常)。如果只需要将类的实例传递给另一个函数,则不需要单独的变量(抛出异常也属于这一类)。
相关文章:
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 我似乎对if/else的基本语句有问题:/
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- 如何实现 throw 语句来执行整数值
- 异常的方法签名中的 throw 语句
- 与c++的Exception throw语句混淆