书籍详情
C++沉思录(英文版)
作者:(美)Andrew Koenig Barbara E. Moo凯尼格,(美)莫 著
出版社:人民邮电出版社
出版时间:2013-02-01
ISBN:9787115308511
定价:¥59.00
购买这本书可以去
内容简介
《C++沉思录(英文版)》基于作者在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成,融聚了作者10多年C++程序生涯的真知灼见。全书分为6篇32章,分别对C++语言的历史和特点、类和继承、STL与泛型编程、库的设计等几大技术话题进行了详细而深入的讨论,细微之处几乎涵盖了C++所有的设计思想和技术细节。全书通过精心挑选的实例,向读者传达先进的程序设计的方法和理念。《C++沉思录(英文版)》适合有一定经验的C++程序员阅读学习,可以帮助读者加强提高技术能力,成为C++程序设计的高手。
作者简介
AndrewKoenig是AT&T大规模程序研发部(前贝尔实验室)成员。他从1986年开始从事C语言的研究,1977年加入贝尔实验室。他编写了一些早期的类库,并在1988年组织召开了第一个具有相当规模的C++会议。在ISO/ANSIC++委员会成立的1989年,他就加入了该委员会,并一直担任项目编辑。
目录
chapter 0 prelude
0.1 first try
0.2 doing it without classes
0.3 why was it easier in c++?
0.4 a bigger example
0.5 conclusion
part i motivation
chapter 1 why i use c++
1.1 the problem
1.2 history and context
1.3 automatic software distribution
1.4 enter c++
1.5 recycled software
1.6 postscript
chapter 2 why i work on c++
2.1 the success of small projects
2.2 abstraction
2.3 machines should work for people
chapter 3 living in the real world
part ii classes and inheritance
chapter 4 checklist for class authors
chapter 5 surrogate classes
5.1 the problem
5.2 the classical solution
5.3 virtual copy functions
5.4 defining a surrogate class
5.5 summary
chapter 6 handles: part 1
6.1 the problem
6.2 a simple class
6.3 attaching a handle
6.4 getting at the object
6.5 simple implementation
6.6 use-counted handles
6.7 copy on write
6.8 discussion
chapter 7 handles: part 2
7.1 review
7.2 separating the use count
7.3 abstraction of use counts
7.4 access functions and copy on write
7.5 discussion
chapter 8 an object-oriented program
8.1 the problem
8.2 an object-oriented solution
8.3 handle classes
8.4 extension 1: new operations
8.5 extension 2: new node types
8.6 reflections
chapter 9 analysis of a classroom exercise: part 1
9.1 the problem
9.2 designing the interface
9.3 a few loose ends
9.4 testing the interface
9.5 strategy
9.6 tactics
9.7 combining pictures
9.8 conclusion
chapter 10 analysis of a classroom exercise: part 2
10.1 strategy
10.2 exploiting the structure
10.3 conclusion
chapter 11 when not to use virtual functions
11.1 the case for
11.2 the case against
11.3 destructors are special ,
11.4 summary
part iii templates
chapter 12 designing a container class
12.1 what does it contain?
12.2 what does copying the container mean?
12.3 how do you get at container elements?
12.4 how do you distinguish reading from writing?
12.5 how do you handle container growth?
12.6 what operations does the container provide?
12.7 what do you assume about the container element type?
12.8 containers and inheritance
12.9 designing an arraylike class
chapter 13 accessing container elements
13.1 imitating a pointer
13.2 getting at the data
13.3 remaining problems
13.4 pointer to const array
13.5 useful additions
chapter 14 iterators
14.1 completing the pointer class
14.2 what is an iterator?
14.3 deleting an element
14.4 deleting the container
14.5 other design considerations
14.6 discussion
chapter 15 sequences
15.1 the state of the art
15.2 a radical old idea
15.3 well, maybe a few extras...
15.4 example of use
15.5 maybe a few more...
15.6 food for thought
chapter 16 templates as interfaces
16.1 the problem
16.2 the first example
16.3 separating the iteration
16.4 iterating over arbitrary types
16.5 adding other types
16.6 abstracting the storage technique
16.7 the proof of the pudding
16.8 summary
chapter 17 templates and generic algorithms
17.1 a specificexample
17.2 generalizing the element type
17.3 postponing the count
17.4 address independence
17.5 searching a nonarray
17.6 discussion
chapter 18 generic iterators
18.1 a different algorithm
18.2 categories of requirements
18.3 input iterators
18.4 output iterators
18.5 forward iterators
18.6 bidirectional iterators
18.7 random-access iterators
18.8 inheritance?
18.9 performance
18.10 summary
chapter 19 using generic iterators
19.1 iterator types
19.2 virtual sequences
19.3 an output-stream iterator
19.4 an input-stream iterator
19.5 discussion
chapter 20 iterator adaptors
20.1 an example
20.2 directional asymmetry
20.3 consistency and asymmetry
20.4 automatic reversal
20.5 discussion
chapter 21 function objects
21.1 an example
21.2 function pointers
21.3 function objects
21.4 function-object templates
21.5 hiding intermediate types
21.6 one type covers many
21.7 implementation
21.8 discussion
chapter 22 function adaptors
22.1 why function objects?
22.2 function objects for built-in operators
22.3 binders
22.4 a closer look
22.5 interface inheritance
22.6 using these classes
22.7 discussion
part iv libraries
chapter 23 libraries in everyday use
23.1 the problem
23.2 understanding the problem--part 1
23.3 implementation—part 1
23.4 understanding the problem--part 2
23.5 implementation--part 2
23.6 discussion
chapter 24 an object lesson in library-interface design
24.1 complications
24.2 improving the interface
24.3 taking stock
24.4 writing the code
24.5 conclusion
chapter 25 library design is language design
25.1 character strings
25.2 memory exhaustion
25.3 copying
25.4 hiding the implementation
25.5 default constructor
25.6 other operations
25.7 substrings
25.8 conclusion
chapter 26 language design is library design
26.1 abstract data types
26.2 libraries and abstract data types
26.3 memory allocation
26.4 memberwise assignment and initialization
26.5 exception handling
26.6 summary
part v technique
chapter 27 classes that keep track of themselves
27.1 design of a trace class
27.2 creating dead code
27.3 generating audit trails for objects
27.4 verifying container behavior
27.5 summary
chapter 28 allocating objects in clusters
28.1 the problem
28.2 designing the solution
28.3 implementation
28.4 enter inheritance
28.5 summary
chapter 29 applicators, manipulators, and function objects
29.1 the problem
29.2 a solution
29.3 a different solution
29.4 multiple arguments
29.5 an example
29.6 abbreviations
29.7 musings
29.8 historical notes, references, and acknowledgments
chapter 30 decoupling application libraries from input-output
30.1 the problem
30.2 solution 1: trickery and brute force
30.3 solution 2: abstract output
30.4 solution 3: trickery without brute force
30.5 remarks
part vi wrapup
chapter 31 simplicity through complexity
31.1 the world is complicated
31.2 complexity becomes hidden
31.3 computers are no different
31.4 computers solve real problems
31.5 class libraries and language semantics
31.6 making things easy is hard
31.7 abstraction and interface
31.8 conservation of complexity
chapter 32 what do you do after you say rello world?
32.1 find the local experts
32.2 pick a tool kit and become comfortable with it
32.3 some parts of c are essential...
32.4 ... but others are not
32.5 set yourself a series of problems
32.6 conclusion
index
0.1 first try
0.2 doing it without classes
0.3 why was it easier in c++?
0.4 a bigger example
0.5 conclusion
part i motivation
chapter 1 why i use c++
1.1 the problem
1.2 history and context
1.3 automatic software distribution
1.4 enter c++
1.5 recycled software
1.6 postscript
chapter 2 why i work on c++
2.1 the success of small projects
2.2 abstraction
2.3 machines should work for people
chapter 3 living in the real world
part ii classes and inheritance
chapter 4 checklist for class authors
chapter 5 surrogate classes
5.1 the problem
5.2 the classical solution
5.3 virtual copy functions
5.4 defining a surrogate class
5.5 summary
chapter 6 handles: part 1
6.1 the problem
6.2 a simple class
6.3 attaching a handle
6.4 getting at the object
6.5 simple implementation
6.6 use-counted handles
6.7 copy on write
6.8 discussion
chapter 7 handles: part 2
7.1 review
7.2 separating the use count
7.3 abstraction of use counts
7.4 access functions and copy on write
7.5 discussion
chapter 8 an object-oriented program
8.1 the problem
8.2 an object-oriented solution
8.3 handle classes
8.4 extension 1: new operations
8.5 extension 2: new node types
8.6 reflections
chapter 9 analysis of a classroom exercise: part 1
9.1 the problem
9.2 designing the interface
9.3 a few loose ends
9.4 testing the interface
9.5 strategy
9.6 tactics
9.7 combining pictures
9.8 conclusion
chapter 10 analysis of a classroom exercise: part 2
10.1 strategy
10.2 exploiting the structure
10.3 conclusion
chapter 11 when not to use virtual functions
11.1 the case for
11.2 the case against
11.3 destructors are special ,
11.4 summary
part iii templates
chapter 12 designing a container class
12.1 what does it contain?
12.2 what does copying the container mean?
12.3 how do you get at container elements?
12.4 how do you distinguish reading from writing?
12.5 how do you handle container growth?
12.6 what operations does the container provide?
12.7 what do you assume about the container element type?
12.8 containers and inheritance
12.9 designing an arraylike class
chapter 13 accessing container elements
13.1 imitating a pointer
13.2 getting at the data
13.3 remaining problems
13.4 pointer to const array
13.5 useful additions
chapter 14 iterators
14.1 completing the pointer class
14.2 what is an iterator?
14.3 deleting an element
14.4 deleting the container
14.5 other design considerations
14.6 discussion
chapter 15 sequences
15.1 the state of the art
15.2 a radical old idea
15.3 well, maybe a few extras...
15.4 example of use
15.5 maybe a few more...
15.6 food for thought
chapter 16 templates as interfaces
16.1 the problem
16.2 the first example
16.3 separating the iteration
16.4 iterating over arbitrary types
16.5 adding other types
16.6 abstracting the storage technique
16.7 the proof of the pudding
16.8 summary
chapter 17 templates and generic algorithms
17.1 a specificexample
17.2 generalizing the element type
17.3 postponing the count
17.4 address independence
17.5 searching a nonarray
17.6 discussion
chapter 18 generic iterators
18.1 a different algorithm
18.2 categories of requirements
18.3 input iterators
18.4 output iterators
18.5 forward iterators
18.6 bidirectional iterators
18.7 random-access iterators
18.8 inheritance?
18.9 performance
18.10 summary
chapter 19 using generic iterators
19.1 iterator types
19.2 virtual sequences
19.3 an output-stream iterator
19.4 an input-stream iterator
19.5 discussion
chapter 20 iterator adaptors
20.1 an example
20.2 directional asymmetry
20.3 consistency and asymmetry
20.4 automatic reversal
20.5 discussion
chapter 21 function objects
21.1 an example
21.2 function pointers
21.3 function objects
21.4 function-object templates
21.5 hiding intermediate types
21.6 one type covers many
21.7 implementation
21.8 discussion
chapter 22 function adaptors
22.1 why function objects?
22.2 function objects for built-in operators
22.3 binders
22.4 a closer look
22.5 interface inheritance
22.6 using these classes
22.7 discussion
part iv libraries
chapter 23 libraries in everyday use
23.1 the problem
23.2 understanding the problem--part 1
23.3 implementation—part 1
23.4 understanding the problem--part 2
23.5 implementation--part 2
23.6 discussion
chapter 24 an object lesson in library-interface design
24.1 complications
24.2 improving the interface
24.3 taking stock
24.4 writing the code
24.5 conclusion
chapter 25 library design is language design
25.1 character strings
25.2 memory exhaustion
25.3 copying
25.4 hiding the implementation
25.5 default constructor
25.6 other operations
25.7 substrings
25.8 conclusion
chapter 26 language design is library design
26.1 abstract data types
26.2 libraries and abstract data types
26.3 memory allocation
26.4 memberwise assignment and initialization
26.5 exception handling
26.6 summary
part v technique
chapter 27 classes that keep track of themselves
27.1 design of a trace class
27.2 creating dead code
27.3 generating audit trails for objects
27.4 verifying container behavior
27.5 summary
chapter 28 allocating objects in clusters
28.1 the problem
28.2 designing the solution
28.3 implementation
28.4 enter inheritance
28.5 summary
chapter 29 applicators, manipulators, and function objects
29.1 the problem
29.2 a solution
29.3 a different solution
29.4 multiple arguments
29.5 an example
29.6 abbreviations
29.7 musings
29.8 historical notes, references, and acknowledgments
chapter 30 decoupling application libraries from input-output
30.1 the problem
30.2 solution 1: trickery and brute force
30.3 solution 2: abstract output
30.4 solution 3: trickery without brute force
30.5 remarks
part vi wrapup
chapter 31 simplicity through complexity
31.1 the world is complicated
31.2 complexity becomes hidden
31.3 computers are no different
31.4 computers solve real problems
31.5 class libraries and language semantics
31.6 making things easy is hard
31.7 abstraction and interface
31.8 conservation of complexity
chapter 32 what do you do after you say rello world?
32.1 find the local experts
32.2 pick a tool kit and become comfortable with it
32.3 some parts of c are essential...
32.4 ... but others are not
32.5 set yourself a series of problems
32.6 conclusion
index
猜您喜欢