最新修訂日期:
本頁是《C++ 程式語言經典本》的勘誤。
這份勘誤,一部份是由於原著 The C++ Programming Language, 3rd Edition 本身即有的錯誤,一部份是譯者在翻譯過程中所引入的錯誤。
嚴格來說,原作者 Bjarne Stroustrup 在他的網頁裡為本書所列的 勘誤表, 並不全然是「勘誤」,有些反而是「補充」。 這一點要特別注意。
如果您發現中譯本有任何可能的錯誤,請與我連絡, 我會盡快確認並加在勘誤表上。
:) 請見其他未特別註明者。
Shape 抽象型別一樣
→ Stack
return !is.eof() && → ||
| 原程式碼 | 新程式碼 |
|
|
0x7fffaedc 0x7fffaefe → d
f1 函數呼叫用了兩個參數:
v[ii] 和 i++
→ i
unsigned 同伴身上 →
、它們的 unsigned 型、以及 enum
arg → 不定參數列資訊
| 原程式碼 |
|
| 新程式碼 |
|
| 原程式碼 | 新程式碼 |
|
|
atexit(f) 執行之前就已建構出來了
→
凡是在 atexit(f) 執行之前就已被建構完成的靜態物件
(全域物件、函數內之 static 物件、類別內之 static 物件)
(const string& n, Date fd);
→ )
Iter for_each → Fctreturn b; → f
operator+(int); → X operatoroperator+(X); → Y operator
virtual void prompt() {}
7 來初始化指標 T*
→ Link*
// 顯示時鐘的臉與手 → 鐘面與指針
// 顯示時鐘的臉與手 → 鐘面與指針
hash_map<type_info*
→ const type_info*
void operator delete[](void*, size_t);
→ (void*)
| 原程式碼 |
|
| 新程式碼 |
|
end() 是無害的
(譯註:就像「delete 0;」指令一樣是無害的)
→
如果 e 是 m.end() 的話,
呼叫 m.erase(b,e) 是無害的
(假設此處的 b 真的有指向 m 的某個元素,或者等於 m.end())。
然而,若 p 是 m.end() 的話,
那麼,呼叫 m.erase(p) 便是個嚴重錯誤,可能會破壞容器。
pow(i, 2)
→ 2, i
mapped_type& hash_map::
→ hash_map<Key,T,H,EQ,A>
b.size()*max_load
→ size_type(b.size()*max_load)
void hash_map::
→ hash_map<Key,T,H,EQ,A>
b.clear();
→ fill(b.begin(), b.end(), (Entry*) 0);
void hash_map::
→ hash_map<Key,T,H,EQ,A>
| 原程式碼 |
|
| 新程式碼 |
|
iterator_type
→ iterator
|
generate(v2, &v2[900], Randint)
→ Randint()
Nocase
→ Nocase()
In i,
→ In&
c->begin() - curr
→ curr - c->begin()
typename C::」刪去。
copy(vec.begin(), vec.end(), lst.begin(), lst.end());
→ begin()
const void*。
→ void*
| 原程式碼 |
|
| 新程式碼 |
|
rebind() 所要求的)
→ rebind
good() 狀態的串流
施以任何輸入動作都是無效的
→ ,(對該輸入變數而言)都是無效的
| 原程式碼 |
|
| 新程式碼 |
|
Bound_form Form::operator()(double d) { return Bound_form
→ ) const {
basic_streambuf();」這行刪去。
basic_streambuf();」這行塞入「//...」的下一行。
std::locale::global());
→ locale()
double mul(const valarray<double>& v1
→ Cslice_iter
res(i) = mul
→ [i]
int 值 →
自 int 值隱式轉換成列舉物
??? ?」一項刪去。
255 → 127
{ } [ ] | 字元 → { } [ ] | !\ 或 ! → \