爲std::basic_istream
算術提取操作員non-virtual overloads for all 8 integer types(未上市字符,這是不同無論如何處理),並呼籲num_get::get
,其中有個別virtual overloads for 6 of them爲什麼num_get和num_put是不對稱的?
算術插入運營商std::basic_ostream
(失蹤簽署的短期和INT的版本)它也有non-virtual overloads for all 8 integer types,它調用num_put::put
,它只有virtual overloads for 4 types,它們是long
,long long
及其未簽名的變體。對於較小的類型,插入操作符執行整數升級。
爲什麼在用戶可擴展性方面存在差距?似乎不可能爲每種整數類型提供用戶定義的處理(例如,在iostream接口之上構建一個保存類型的序列化庫),而且它是不對稱的。它可以很輕鬆地完成。是否有權衡?
但問題的意圖是要問爲什麼模塊化決定反對 - 例如,自定義的num_put和num_get,允許使用格式化的輸入/輸出操作符的二進制I/O。 – 2013-09-30 02:44:45
@ LB--:我相信這兩個答案都有充分的解釋。你錯過了什麼? – 2013-09-30 03:18:15
當我想要在'num_put'中保存類型信息時(例如二進制輸出),我看不出該原理是如何應用的。 – 2013-10-01 20:28:40