C++ 学习指南 (句句经典)
* U/ ?/ l d3 v 1. 把C++当成一门新的语言学习(和C没啥关系,真的!);" B4 w. E5 I' u/ k% X
) N* N6 r. O N
2. 看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差);
4 K5 q+ ^# a0 Q
6 {% ~3 W( l& h8 s$ f9 T9 U% k- j. g 3. 看《The C++ Programming Language》(这本东西有影印板的)和《Inside The C++ Object Model》
4 E* D3 ]( _/ [1 r 不要因为他们很难而 我 们自己是初学者所以就不看;5 j9 T) [% W5 r8 |, B( m/ [
7 i# ^$ H2 H3 N9 J3 Q0 o$ n
4. 不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
0 T# G) ]0 [3 u: O9 n3 D4 a. A# I" Z L2 Z( N
5. 不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;; J7 A7 s# g6 g7 }& ]
& t1 i" M3 a$ x9 r/ X* q1 B. F/ C
6. 会用Visual C++,并不说明你会C++;* r5 }8 \$ z0 g$ n3 [0 b. N2 M, {5 e5 u
! O% ]: Y/ w/ Y% X& q% z* @
7. 学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
' ^! R. R7 ~, z# q7 O- h: D6 L: e
8. 如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高8 q9 ?, K y1 @+ }2 v R
其实可以时刻记住:学C++是为了编游戏的;9 a& z6 U7 z' S: @
; I; e6 M: R0 n. Q/ m0 ] 9. 看Visual C++的书,是学不了C++语言的;
; t! R7 C4 b8 P" K3 K
: a- I' S1 T; L& |7 }! f" r 10. 浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!
$ s' ^4 c$ J+ G* @! Q2 _1 J A1 a; H$ |. W. v
11. 浮躁的人容易问:我到底该学什么;——别问,学就对了;5 i/ J$ R/ Z# @5 J" Q
4 l: D2 h, B; j% R# U% c7 p: Z 12. 浮躁的人容易问:XX有钱途吗;——建议你去抢银行;+ \. i& v0 s! h1 u
- G0 V0 s& P* D* b c9 E. D% r' Y
13. 浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
/ s; Y1 L3 U5 G( ^
% h( }9 f* ^. ~% \: w' z 14. 浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;2 V! K a) e$ K& e- d/ g
& I9 F+ f6 v4 m4 V7 [ 15. 浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;! B: X2 U( \& B, e% @( e
' P- J# `0 m3 O* I6 F3 _6 F
16. 把时髦的技术挂在嘴边,还不如把过时的技术记在心里;$ e% ~& i1 ]3 I& l6 D( X4 F9 E& W
5 Y' _. P* I0 B 17. C++不仅仅是支持面向对象的程序设计语言;
* |. q4 B9 Z" W' I( W% @/ }+ v4 m
18. 学习编程最好的方法之一就是阅读源代码;
- o5 j$ Y4 }3 Z4 V0 d2 ]* P3 J% A+ y+ q8 W/ f8 R
19. 在任何时刻都不要认为自己手中的书已经足够了;3 w* J5 {* r( e: r* p( b( P4 s$ j
: V7 J1 Z( Y2 a( X: I
20. 请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
Z4 _3 S$ o3 H1 a. z7 d0 _) v: _, ]5 R! b- q: D
21. 看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
9 l! y$ M6 H. x
4 ]& P( j& y3 i: W/ v: X/ W 22. 别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;7 w7 u6 A3 P4 \& R3 L! d0 v& ]
8 N- g2 A# `& s) D. z$ Z% G9 A
23. 请看《Effective C++》(这本书刚出,也是候sir翻译的)和《More Effective C++》以及《Exceptional C++》;2 k: K0 y- y6 T
& y8 g0 C& p" K# G
24. 不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
e8 |$ Y) ^* C. \1 Y" v5 x) ]* _7 r; Y
25. 和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
* n$ T/ d2 d5 L% ~( X& _
O: X o; w4 q 26. 请看《程序设计实践》,并严格的按照其要求去做;
$ x2 k$ M' A& p' E" q& o* ~+ T
7 I( |, I! `+ a1 |' ? 27. 不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
& l% Z* @0 x# R
m9 w' K: _# U6 @) m. g 28. C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;7 e; m6 b* H% C) _* E* J7 L0 `
; w1 ?4 H. P7 c1 M2 f" }* F K. t 29. 请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;% Q1 @, F! k% M! F! t
' ]4 ?3 h2 J- I+ ?, Z+ ]+ n. [
30. 读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
) D7 t4 e2 ?& c& `/ u5 d/ R
; M) R/ S3 w9 R" ~5 X 31. 学习编程的秘诀是:编程,编程,再编程;6 y; i+ [. p7 K& h( F! w
3 t9 D' D, o+ p7 V 32. 请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》
! \; \+ t5 }/ E7 d 《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》
$ v: d9 l K; J4 J5 j1 b. K 《The Art of Computer Programming》;7 y1 w, a' Q% g
# A9 {8 t8 D& H, z1 W9 q
33. 记住:面向对象技术不只是C++专有的;
1 G% d, J1 g9 x6 y. U& ]
' }8 L& a( q% v4 W: r# B 34. 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
) f' p$ V8 A7 N2 M" v$ Y/ v" R
2 ^0 f4 S! m6 _& {9 r) E 35. 把在书中看到的有意义的例子扩充;% K J1 D! i) F% b' K
* S/ s6 W* V2 G ]4 d. d 36. 请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
. |% k0 _4 y( O! B* ?) B; O" H) H! D1 Z' Y. V: H9 H
37. 经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
' I- F# R3 q+ L8 W
+ k& C2 ]; m/ D& N; a$ L 38. 不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
% y7 \; [5 @# R) t1 S5 k
6 c: W4 {; p, Z0 }% I4 m 39. C++语言和C++的集成开发环境要同时学习和掌握;
( M7 A6 f* u- s$ b: l! f0 X* X& g$ i8 g( D3 V0 @ p b' ~
40. 既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;1 s$ x: z3 m7 I+ W1 L7 p# z
) X8 y# u( H ?/ P
41. 就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;3 j- z/ X3 Q) Y# z! Y$ m+ B
6 Y$ n# b" o7 z, q; a* M 42. 当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;/ x0 b3 {: T D% f& X2 _" i
请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
, d* j' X4 Y8 q: Q. `0 A) {/ D0 B7 X+ i: @2 q8 a( a- Q% n
43. 别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
. Q5 b! O3 w, T7 o: }% }. z2 _$ Y5 `7 @1 _5 w
44. 决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
" ^$ S9 V* Q, A/ G% {
, Q$ J1 m# Y% z ]& p/ @6 x 45. 每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
, J. r% {# p7 N- d/ z# l' q" Y9 \
46. 记录下在和别人交流时发现的自己忽视或不理解的知识点;
1 f! ]# I* H7 U% g" p5 x) a5 @! Z% y9 a* M# e3 D1 b; Y" D
47. 请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX; 4 }* U* f* Z0 e: A
4 f6 q& P4 y4 w2 p9 V+ q) h" d }5 S 48. 保存好你写过的所有的程序——那是你最好的积累之一;
' H4 e" t" d/ a3 }' e* @3 r$ U+ n) X! {7 X
49. 请不要做浮躁的人;
3 A v: _ o' K1 B. F% Q! w( a3 U8 y: _$ E/ j V0 x1 o
50. 请热爱C++!
$ Y1 h( _! Z. d6 ?9 Z
/ Y9 d# `9 |0 D. X 其实选择什么样的语言并不重要,重的是编程的思想和你的热爱!