0
有没有人有异常类的源代码副本? 我想研究它的实现。 感谢
编辑:我正在寻找的std ::例外
我感兴趣,因为我想知道的构造是如何发生一个char *并初始化它的成员变量,以及如何拷贝构造函数,赋值运算符是在这个班上完成。C++异常类源代码
有没有人有异常类的源代码副本? 我想研究它的实现。 感谢
编辑:我正在寻找的std ::例外
我感兴趣,因为我想知道的构造是如何发生一个char *并初始化它的成员变量,以及如何拷贝构造函数,赋值运算符是在这个班上完成。C++异常类源代码
在C++中没有基类“异常类”:您可以抛出几乎任何东西,即使是int
(throw 42;
非常有效)。
如果你正在谈论std::exception
类,那么它几乎没有任何成员函数实际上需要做任何事情(what()
只需要返回一个指向某个C字符串的指针)。以下将是一个完全正确的实现:
struct exception {
exception() throw() { }
exception(const exception&) throw() { }
exception& operator=(const exception&) throw() { }
virtual ~exception() throw() { }
virtual const char* what() const throw() { return "o noez! an exception!"; }
};
标准库中的异常类,允许你指定自己的字符串(例如,std::runtime_error
)使用std::string
。他们不应该进行任何手动内存管理,因为他们可以使用std::string
。 (从技术上讲,内部实现不必使用std::string
,但它的构造函数必须使用std::string
。)