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
。)