C++Primer(第四版)勘误

C++Primer(第四版)勘误
转》C++ Primer (第四版)勘误
C++ Primer (第四版)勘误: 我⾃⼰整理的⽹上资料.
1.
在《C++ Primer》第四版section9.2. Iterators and Iterator Ranges中的Table 9.4. Operations Supported by vector and deque Iterators中列出了两种运算:
iter1 += iter2
iter1 -= iter2
Compound-assignment versions of iterator addition and subtraction. Assigns the value of adding or subtracting iter1 and iter2 into iter1.
⼀看到这两个表达式时就感觉有点怪,因为指针和迭代器是⾮常相似的,⽽指针并不⽀持+=、-+复合赋值运算符。在VS2005中写了个⼩测试程序却得到了如下错误:
error C2679: binary '+=' : no operator found which takes a right-hand operand of type
'std::_Vector_iterator<_Ty,_Alloc>' (or there is no acceptable conversion)
google⼀下,很多⼈说应该是作者的错误。于是查了C++ Primer Errata(勘误表),(英⽂版)Lippman已经对此进⾏勘误:
Page 313: The description of the compound assignment operators in Table 9.4 incorrectly refer to iter2 as the right-hand operand; in each instance, iter2 should be replaced by n. The right-hand operand must be an integral value, not an iterator.
正确的形式应该为:
昌都论坛iter1 += n
iter1 -= n汽车使命
2.
来⾃CSDN⼀位⽹友的博客:
P13(第13页) “不是所有编译器都有这⼀要求”后半句应翻译为“都满⾜这⼀标准”。
影响阅读程度:严重
说明:“编译器”如何能“要求”C++标准?原英⽂版中的“enforce”应翻译为“满⾜”⽽不是“有”,动宾关系才不会搞反。
P43 “有多个初始化式时不能使⽤复制初始化”前半句应翻译为“有多个初始化参数时”。
影响程度:⼀般
P45 “如果定义某个类的变量时没有提供初始化式….”这句和后⼀句应翻译为“如果定义某个类的变量时没有提供初始化参数,那么系统会调⽤该类的’缺省构造函数’。”
影响程度:⼀般
P50 有三处的“const变量”翻译为“const常量”或“const对象”⽐较好,虽然原英⽂版有两处也是⽤const variable。
影响程度:轻微
P52 “仅允许const引⽤绑定到需要临时使⽤的值”应翻译为“仅允许const引⽤绑定到需要临时值中转来完成绑定过程的对象”
影响程度:严重
说明:译者对宾语的主体理解错误。原英⽂版中的“临时使⽤的值”是⽤来修饰value(对象)的,不是最终的宾语。
因为对于程序员来说,编译器做的中转⼯作是透明的,const引⽤最终还是绑定到对象,虽然结果相同。
P65 “word(字)机器上的⾃然的整型计算单元”应翻译为“word(字)是在给定机器上进⾏整型计算的原始单元”
影响程度:⼀般
阈值法P79 “v4含有值初始化的元素”这句应翻译为“v4含有n个⽤缺省构造函数中的值初始化的元素”
影响程度:严重
P79 “动态地添加元素”这句应翻译为“当元素值已知时,最好是通过动态地向它添加元素,来让它增长。”
影响程度:⼀般
3.
农民肺页码⾏数原译⽂更正备注
70 -6 String string
80 13 vector<string> fvec(10) vector<int> fvec(10)
119 15 pc + 1 pc
120 -13 解释这两个程序解释这两段程序
228 2 添加两个Sales_item对象将两个Sales_item对象相加
268 13 存储deque对象⾥的元素存储deque对象元素
269 -3 与vector对象的⼀个元素捆绑在⼀起绑定到vector对象的⼀个元素
278 -10 长度⼤⼩⼤⼩
281 -11 必须确保迭代器是不是end迭代器必须确保迭代器不是end迭代器
300 -13 2.覆写基础容器类型 2.覆盖基础容器类型
300 -11 覆写覆盖
325 -12 名字及其作品
338  5-6 第⼆个迭代器所指向的元素[有时被称为超出末端迭代器(off-the-end iterator)] 第⼆个迭代器[有时被称为超出末端迭代器(off-the-end iterator)]所指向的元素
446 -2 另⼀个指向数组的末端另⼀个指向超出数组末端的下⼀位置
451 -7 但测试给定的长度是否与其边界相匹配但测试给定string对象的长度是否与其边界相匹配
457 -7 const int(); operator const int();
国家新型城镇化规划2014-2020457 -6 int() const; operator int() const;
463 -13  成员函数应指定为public
463 -5 public public:
466 13  成员函数应指定为public
466 21 complex Complex
474 -8 保留字保留字virtual
487  习题之上的代码段最后加上⼀个“}”
491 -3 std::string& book, double sales_price, std::string& book="", double sales_price=0.0,
山野的呼唤496 16 基类⼏乎总是需要构造函数基类⼏乎总是需要析构函数
506 -4 减1 加1
509 10 使⽤带关联容器的⽐较器使⽤带⽐较器的关联容器
511 -16 该操作符返回句柄所关联的基础Item_base对象,⽤该Item_base对象调⽤该操作符返回句柄所关联的基础
Item_base对象的指针,⽤该Item_base对象指针调⽤
516 11 构造函数析构函数
542 -5 调⽤定义
542 -17 传递两个字符串字⾯值调⽤compare是切合实际的使得可以传递两个字符串字⾯值调⽤compare
543 2 ⽅式构造程序的构造程序的⽅式
550 ‘-18及-16 Queue<int> Queue<string>
551 -4 解释为什么解释导致什么实例化
605 -12 为什么在程序中可以定义⾃⼰的命名空间?为什么在程序中定义⾃⼰的命名空间?

本文发布于:2024-09-20 20:27:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/140708.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   元素   迭代   绑定
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议