gpt4 book ai didi

c++ - 函数声明后的 throw() 有什么用?

转载 作者:行者123 更新时间:2023-12-01 22:54:42 25 4
gpt4 key购买 nike

<分区>

Throw 在https://en.cppreference.com/w/cpp/language/throw 中定义为C++ 表达式 .从句法上讲,它后面跟着一个异常类名。例如:

int a = 1, b = 0; 
if (b==0){
string m ="Divided by zero";
throw MyException(m); //MyException is a class that inherit std::exception class
}

但是,我看到了其他我不太理解的 throw 语法:

void MyFunction(int i) throw();     // how can we have an expression following a function definition? 

或者在自定义异常类中,我们还有:

class MyException : public std::exception
{
public:
MyException( const std::string m)
: m_( m )
{}

virtual ~MyException() throw(){}; // what is throw() in this case?
const char* what() const throw() { // what are the parentheses called?
cout<<"MyException in ";
return m_.c_str();
}

private:
std::string m_;
};

因此,我的问题是:

  1. 是否存在允许表达式后跟函数定义的通用语法规则?
  2. 为什么表达式 throw 后要有括号?它们在 C++ 中叫什么?

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