2011-03-27 92 views
0

有没有人有异常类的源代码副本? 我想研究它的实现。 感谢

编辑:我正在寻找的std ::例外
我感兴趣,因为我想知道的构造是如何发生一个char *并初始化它的成员变量,以及如何拷贝构造函数,赋值运算符是在这个班上完成。C++异常类源代码

回答

1

在C++中没有基类“异常类”:您可以抛出几乎任何东西,即使是intthrow 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。)