我是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;
}
}
答案 0 :(得分:5)
它是构造函数吗?
是
是否正在创建一个Except类的实例?
是的。这两种说法都是正确的。
classname( arguments )
其中classname
是类的名称构造此类的实例,将任何可选的arguments
传递给适当的类构造函数。
当然,构造函数是类方法,其名称与类名相同。这就是为什么你的两个问题都有相同的答案,&#34;是的&#34;。
这会创建一个类的临时实例。通常,classname
用于声明表示此类实例的变量,但此语法构造类的临时实例,该实例在表达式的末尾(通常)被销毁。如果所需要的只是将类的实例传递给另一个函数,则不需要单独的变量(抛出异常也会属于这个类别)。