[计算机科学经

Constructs deduced contexts deduced contexts

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ame()把這份「型別表述」以易讀的字串形式傳回給呼叫者。C++ Standard 並不要求 name() 傳回有意義的內容,但是在良好的 C++ 編譯器㆗,它會傳回㆒個字串內含「typeid 運算子的 參數型別」的完好描述。在某些編譯器實作品㆗,這個字串可能以重排(mangled)形式出現(譯 註:見 p.162 注釋),但也有些反重排工具(demangler)可以把它調整回㆟類可讀的形式。例 如㆖面程式的輸出可能如㆘: x in ref(T const&): char [6] x in nonref(T): const char * 如果你曾經在程式㆗把「char array」和「char pointer」混用,你可能被這個令㆟驚奇的問題 搞得頭昏腦脹11。不幸的是,沒有㆒個普遍適用的辦法可以解決這個問題。根據所處情況的不 同,你可以: 以 by value 傳遞方式代替 by reference 傳遞方式。然而這會帶來不必要的拷貝。 分別對 by value 傳遞方式和 by reference 傳遞方式進行重載。然而這會帶來模稜兩可問題 (ambiguities, 歧義性),請參考 B.2.2 節, p.492。 以具體型別(例如 std::string)重載之 以 array 型別重載之。例如: template <typename T, int N, int M> T const* max (T const (&a)[N], T const (&b)[M]) { return a < b ? b : a; } 強迫使用者進...
View Full Document

This note was uploaded on 08/25/2012 for the course EECS 101 taught by Professor Wre during the Fall '12 term at Beacon FL.

Ask a homework question - tutors are online