【发布时间】:2020-10-01 23:36:18
【问题描述】:
#include <iostream>
#include <exception>
using namespace std;
struct MyException : public exception {
const char * what () const throw () {
return "C++ Exception";
}
};
int main() {
try {
throw MyException();
} catch(MyException& e) {
std::cout << "MyException caught" << std::endl;
std::cout << e.what() << std::endl;
} catch(std::exception& e) {
//Other errors
}
}
在上面的程序中,MyException 类的初始化是在catch 函数参数中完成的,catch(MyException& e) 并且初始化也可以在没有& 符号的情况下完成。
我怀疑是在使用& 时真正创建了 MyException 类的对象吗?这里有什么诀窍?
【问题讨论】:
-
不,
MyException是在throw MyException();行构造的。只抓住你,你知道,抓住它。也许您将“初始化”与“声明”混淆了?
标签: c++ class c++11 object exception