自己写的学习笔记,希望大家提出意见和指正错误!

rock_rick 2008-03-08 11:11:09
最近在学习C++,所以坚持做学习笔记,并写在自己的博客上,一来能让自己更好的学习,二来也能给初学c++者一个学习参考.因为也是自学,其中肯定有理解错误的地方,所以希望大家能够多多指教,共同进步吧.感谢!博客地址http://www.justudo.cn
...全文
718 38 打赏 收藏 举报
写回复
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头杀手 2008-03-11
  • 打赏
  • 举报
回复
继续写,好书都是大家一起评论出来的
waigmm 2008-03-11
  • 打赏
  • 举报
回复
谢谢楼主啊 本人是c++初学者 谢谢你的笔记
rock_rick 2008-03-11
  • 打赏
  • 举报
回复
谢谢,谢谢大家的漂亮见解.我是学生物的,由于功课比较多,所以写第三篇晚了一点.晚上才上的电脑把第三篇总结写了上去<C++学习从零开始(三)-流程控制语句>,大家闲暇时指正一下谢谢!
HelloDan 2008-03-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rock_rick 的回复:]
谢谢hellodan的指正。的确在 <iostream> 后加上;运行没有出现错误。但我觉得如果能记住#后面的语句都不加;结束,那么就能避免在例如#define的语句后面加上;而导致错误。谢谢你的指正!
[/Quote]

其实你这种想法是不正确的,像#define Macro,后面加不加;是要看你的用途,它只是替换,但大多数情况是不加的罢了。你可以看看下面的例子。

不过你个人总结得不错了,比我学得快吧。

#include<iostream>

using std::cout;
using std::endl;

#define PI 3.14;

int main()
{
cout<<PI; //但这样的PI你不能作为这些形式用了。如: int num[PI];
cout<<endl;
cout<<PI
cout<<endl;
return 0;
}

0黄瓜0 2008-03-10
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 Vitin 的回复:]
...
[/Quote]

支持.
xuxiaoman0430 2008-03-10
  • 打赏
  • 举报
回复
高薪诚聘C++ Developer(赴IBM)
赴IBM 10335 ruisuyying C++ Developer 2年以上 08-3-3――>08-12-31
Qualifications:Bachelor or master degree in computer science or equivalent experience 010-82452814
Good written English skill
- Can be available before Mar 3 2008.
Personal Qualities:
Stable and willing to work in IBM as a vendor
willing to take responsibility
- Good communication skill
- Good teamwork
- Self-motivated
- Fast learning
Skills Requirements:
- Programming skills:
Strong development skills in C++;
OOA/OOD;
Java and Linux programming is plus
Others as a plus:
Software engineering knowledge & experience

请发送简历至 hally.he@egensource.com,欢迎随时与我联系——何小姐
地点:西直门附近
电话:82355443-18
MSN:hemeili218@126.com
E-mail:hally.he@egensource.com
公司网址:http://www.egensource.com

请发送简历至 yuping.chen@egensource.com,欢迎随时与我联系——陈小姐
地点:西直门附近
电话:82355443-18
MSN:deepblue419@hotmail.com
E-mail:hally.he@egensource.com
公司网址:http://www.egensource.com




zhourenyun 2008-03-10
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 Vitin 的回复:]
更正一句:“在我的印象中,谭先生很久以前就有了。”应该是:“在我的印象中,谭先生的书很久以前就有了。”
这句如果不更正,就属于严重的错误了,呵呵。

另外再提一句,许多人都说《C++ Primer》好,但我觉得《TC++PL》更好,并且要好得多(我想我有资格这样说,因为我已经把《C++ Primer》从头到尾阅读过一遍了)。当然,我仍然要说:如果你手头已经有一本《C++ Primer》,那么请珍惜它。就象我之前说过的,你不能指望…

对你来说适合的就是最好的
[/Quote]
grdwmd 2008-03-09
  • 打赏
  • 举报
回复
请坚决把谭老大书扔掉,选用C++ primer,不然会浪费你宝贵的C++学习时间的,实际上,无论是C,还是C++,谭老的书都是在害人(浪费了你的时间,你说算不算害你?)
qpxxx 2008-03-09
  • 打赏
  • 举报
回复
我也是新手,希望以后多指教。qq是419938997
hertcloud 2008-03-09
  • 打赏
  • 举报
回复
还是 觉得 primer好
Vitin 2008-03-09
  • 打赏
  • 举报
回复
至于“正确的思考方式”,我承认这很重要。如果以“正确的思考方式”为标准,那么我以为“最正确”的是C++之父 Bjarne Stroustrup 和他的《TC++PL》,其他的都可以不要。

但是我不能这样草率。因为这其实是关于书(以及作者)的风格的。比如有人说《C++程序设计》过多的关注C语言的部分,与C++之父所言“把C++当成一门新的语言学习”相冲突。我觉得,这更多的是相关于作者自身的理解、看法或偏好。Bjarne Stroustrup 或是 Stanley B. Lippman 的C++水平比谭先生高,这是事实。但是这并不是说谭先生的思考方式就不正确,也并不是说所有的人都必须以 Bjarne Stroustrup 的方式学习。所以,并不是所有人都必须以《TC++PL》来入门,用《C++ Primer》也不错,用《C++程序设计》也未必就差多少。

因此,我推荐《TC++PL》,但我并不批评其它书。
Vitin 2008-03-09
  • 打赏
  • 举报
回复
更正一句:“在我的印象中,谭先生很久以前就有了。”应该是:“在我的印象中,谭先生的书很久以前就有了。”
这句如果不更正,就属于严重的错误了,呵呵。

另外再提一句,许多人都说《C++ Primer》好,但我觉得《TC++PL》更好,并且要好得多(我想我有资格这样说,因为我已经把《C++ Primer》从头到尾阅读过一遍了)。当然,我仍然要说:如果你手头已经有一本《C++ Primer》,那么请珍惜它。就象我之前说过的,你不能指望你的手头永远有一本最好的书。即使如此,那也可能只是你所知道的最好的。或者,只是今天最好的。有一天,你将能够说某某书有多少多少错误,有多么多么差劲;但是在那之前,在你达到能够这么说的过程之中,你已经从这本书中受益匪浅了。

请珍惜每一本书,但不要将它作为终点。
我啃 2008-03-09
  • 打赏
  • 举报
回复
简明和易懂当然是入门教材之本,批评自然不在此处,在于该教材入门即不引导新人获取正确的思考方式。又要谈及primer,此书同样定位在入门(书名),看过4版发现作者(们)极力将书塑造成引导人们以C++的眼光正确思维~
如果要大要全,primer肯定不行,但是入门舍它其谁?
Vitin 2008-03-09
  • 打赏
  • 举报
回复
转载一篇对谭先生书籍的评论(来自China-Pub,作者lbhl):

====================== 转载开始 ======================

目前在北美读书,常看amazon上的书评。一比较,深深感到国人素质确实和北美有一定距离。评书就评书何必对作者本人辱骂进行人身攻击?北美读者大都富有奉献精神愿意帮助人,写书评的人的比例简直比中国多几个数量级,很多人都愿意写出对书的评价和对读者或作者的建议来帮助广大学习者,但是我从来没有看到低级的贬低辱骂作者更看不到写书评之人之间的互相攻击,从来没有!这种事情在北美是是不可想象的。而且任何说书不好的人绝对不会象这里某些人只会乱骂一句话而丝毫没有支撑论点的论据。

北美的作者和中国不同,编书精益求精,平均每两年就出新版,而且书籍多为独立研编,不像国内编书绝无简单抄袭。主要是因为这里生活富裕,作者有时间有精力有兴趣来从事自己喜欢的工作。

北美所有科技类书籍的共同特点是:
优点:面面俱到,宁可挂万不可漏一,内容及其翔实丰富,讲解大都深入透彻,本本都是大部头象辞典,买一本内容就全了,真要钻研透彻了,本门课程已经可以到达精通的水平,基本无需再买其他参考书。

缺点:绝大部分书,包括大学里正再使用的教材,实际上都不适用做课程入门教材。大学教材必须简明,把最关键最基本最重要的内容用简明的语言交代清楚才是好的教材。这些书写得太重细节,作为教材来说过于啰嗦。北美的大学一个学期上课时间只有3个半月不到,每门课程一周上课2-3个小时,根本不可能把书上内容都覆盖,实际情况是能讲三分之二都已经不错了,只讲一半也很正常,有将近一半的老师上课根本不按照书来上课而是按照自己简明的讲义笔记之类,大量学生仅仅把讲义和笔记作为学习主要甚至唯一的教材,真正的教材束之高阁根本没有时间细看。学生学完后的水平和教材的水平根本就相差十万八千里(除非你是MIT,STANDFORD的),只能知道一些最最基本的皮毛而已,本科学生尤其如此,研究生也好不到哪里去。比如说,北美高校学习C/C 课程用的教材肯定是china-pub这里某些人大肆吹捧的那些北美著名作者的近上千页的书,但是说句实话,最后学完学生的水平能到谭浩强这本书的水平就已经哦米拖佛了!我也怀疑国内这帮唾弃老谭的学生水平是否就真的那么高,个个都到了非老外的大部头不看的水平!你若看翻译版,那么大多数翻译都是错误连篇而且有的英文中文没有可能有对等的词来翻,看英文原版嘛你的水平还没那么高,即使留学多年的人,看两本同样内容的书,中文的绝对比英文来得快,毕竟是母语。人家母语是英语的美国学生都大都没有时间看完教材,更何况你一个中国人呢?再者,老外说话习惯和中国人是不一样的,你能适应吗???

所以真正精明的高效率的学习者,学习任何一门理工科课程,包括这个C程序设计,我建议的方法是先用国内的精品教材迅速入门,对该课程有个概览全貌,掌握最基本和重要的内容。有时间了第二遍再看老外高深的大部头深究细节。即使是那些母语为英语的美国学生,如果国内的精品教材翻译成英语作为初级入门教材的定位出版卖到美国,肯定会大受欢迎。对于一些崇洋媚外的人来说,把谭浩强这本书翻译成英文挂个美国出版商来出版并定个天价,说不定就要喊这本书好了!简明的教材自成体系,毕竟还有时间从头到尾系统地学习一遍,这比不可能有时间全看完被迫打破作者的前后体系到处乱跳着看那些大部头不知道好多少倍!

谭浩强这本教材定位是大学非计算机专业学生程序设计语言入门教材。不是工程大项目软件开发的参考书!请大家不要好高骛远,更不要乱吹牛皮!试想,如果一个从来没学过程序设计的人初次上来学C语言,即使这个人是计算机学专业的,我看此书也是合适的。对于大多数非名牌大学又受太多诱惑不愿意真正花时间努力学习的60分万岁的混日子的学生来说:专为博士生编写的教材学完达到专为硕士生编写的教材的水平,专为硕士生编写的教材学完达到专为本科生编写的教材的水平,专为本科生编写的教材学完达到专为大专生编写的教材的水平,专为大专生编写的教材学完达到专为职高生编写的教材的水平,专为职高生编写的教材学完达到无法享受正规教育基础又差的外行自学的水平,这,才是我看到的残酷的现实。。。。

每每看到那些把老外的书吹捧上了天把国内精品书(尽管不多但毕竟还是有一些)唾骂得一无是处的人,我就感觉好笑。这些人多半是一些说话不负责的人。真正的高水平程序员一定会感谢谭浩强这本好书当初是如何把他引进这个职业大门的。我记的某程序员杂志的访谈,很高水平的出书级别的大虾都建议初学的人好好研读这本书。

贬低人家的书与你自己水平有多高没有什么关系。骂老谭书上程序写得不好纯粹是无稽之谈。若真正把老谭的书上的例子倒背如流举一反三,C的编程已经有一个非常厚实的基础了。任何一本书都有可取之处。自己水平的高低不在于你看的书写的水平有多高,而在于你自己能把书利用到什么程度,学到什么水准!

====================== 转载结束 ======================

在我的印象中,谭先生很久以前就有了。虽然我本人没有仔细拜读过他的书,但是我知道,谭先生确实为普及计算机科学技术作出了卓越的贡献。批评他的人大都是看了他那本经典的《C程序设计》。我私下揣测,这本书确实有不足之处吧,毕竟空穴来风未必无因啊。但是,在九十年代初,又有多少人能有机会阅读《The C Programming Language》呢?即使阅读了,又有多少人能看得懂呢?我想至少在那个时候,《C程序设计》比《TCPL》更适合学生们使用,更适合用于普及C语言!在入门之后再来学习《TCPL》,或许你便会发现《C程序设计》的一些错误(只是或许,本人无法评价该书的内容,原因前面已经提到),但是请不要忘了,如果没有读过《C程序设计》,你能够入门吗?即使你没有读过《C程序设计》,那也可能是你的老师读过;即使不是《C程序设计》,那也可能是其他国内编撰的入门书籍;即使以上都不是,那你的老师也可能如谭先生一样,是国内计算机学科的先驱者!那么我们又有什么理由指责谭先生呢:只是因为他的书不及你想象中的完美,只是因为你已跨过了最初的艰难,只是因为你的眼界更高而对过去不屑一顾?对此,我想说的是:请不要忘了,国内的计算机科学事业,是经过谭先生的一代,才发展到我们这一代的,我们每个人也是从最初的混沌无知慢慢走过来的!如果是因为书的内容比较初级而贬低它,那么请闭嘴吧——忘记过去就意味着背叛!

当然,也有不少人确实是批评书的质量。对于这样的批评,(只要是真诚的)我都是赞赏的,相信谭先生也是欢迎的。对于书中出现的(可能的)错误,我觉得应该这样看:首先任何书都可能有错,作为一个读者应该知道这一点,你也不能将任何书当成圣经来读;其次,对于一个善于学习的人来说其实不必害怕这些错误,因为你有判断是非的能力。这不是说,当你第一次读书时就能判断出一个错误。而是,你不能仅止于一次阅读,你一定会去实践,你会去验证(从实践中,或从其他书,其他人),从而获得真知。只要你不要迷信,不要教条,那么书的错误其实危害不大,你总有回到正确认识的机会;相反,如果造成了重大危害,我觉得不能将过错推给书,应该首先从自身上找原因。毕竟,谭先生不是故意写错的吧,他也没有宣称过自己的书是金科玉律吧?是的,书的质量总是有好有坏,而每个人都希望自己手头有一本最好的书。但是,只有属于你自己的书是值得珍惜的。(什么是“属于你自己”呢?我想绝不是你买下了它而扔在书橱里附庸风雅。)如果你有一本属于自己的《C程序设计》,请珍惜它;或许它不及《TCPL》完美,但是它对于你的价值可能要高得多。

至于谭先生的《C++程序设计》,我了解到它是近几年刚刚出版的。我估计看过的人并不多,评论更无从谈起。我最欣赏的C++教材是C++之父所著的《The C++ Programming Language》,但我不会拿它与《C++程序设计》作比较,也没有资格比较(毕竟我没有看过后者)。我只会说:《TC++PL》很好,是我看过的最好的C++书籍,我向大家推荐它。但是,如果你手头已经有了一本《C++程序设计》,那么请不要轻易放弃它。对于身边的每一本书,只要你能够从中汲取养分,你就应该珍惜它。

另:关于“程序单位”,我理解下来应该是指translation unit(翻译单元)。你可能会说它不够“信、达、雅”,但是在九十年代初期谭先生这样论述,至少是深入浅出的,也是便于他的学生接受的。至于现在仍这样写,应该是保持版本间的一致性。需要注意的是,他并非引入一个专有名词,仅属于对其自身理解的一种阐述,你可以说这个词来源于translation unit,但不能说它就是一个学术性的翻译错误。
rock_rick 2008-03-09
  • 打赏
  • 举报
回复
我询问过一些比我年级高的同学,他们是计算机专业的.他们在用了学校订发的谭的《C++程序设计》之后,去看了primer,反应是老谭的书在“骗人”,“骗钱”(引用的是原话)。这两天有空就去买primer。自己在高中的时候看java,看的thinking in java,看的有点头晕,加上高考在即,就没有进行下去了。现在想从c++开始学习。老谭的书也许可以用“傻瓜式”的模式描述,有如傻瓜相机。对没有一点程序概念的人来讲比较容易入门。
吃了一根大葱 2008-03-09
  • 打赏
  • 举报
回复
我到是有 c++prime 这本书 不过是电子版本的 如果是要可以传下 共同进步 。。。
左大神在这 2008-03-09
  • 打赏
  • 举报
回复
我也在学习C++.但有几年JAVA开发经验,现在做项目经理,希望大家一起学习研究,QQ:115772876 msn:zuochuanmin@hotmail.com,mail;chuan122345@yahoo.cn
左大神在这 2008-03-09
  • 打赏
  • 举报
回复
��Ҳ��ѧC++,���м���JAVA��������.���һ�����.��ӭ����:QQ:115772876 msn:zuochuanmin@hotmail.com,mail;chuan122345@yahoo.cn
yxmmrwx 2008-03-09
  • 打赏
  • 举报
回复
C++难吗?,窃以为不难!
至少在语法上不难,都很容易理解,而且很优雅.
在此说说自己的感觉
要说根基.在1000个程序员中我可能要排到900以后.我并非科班出身.所有知识都是自学得来.
但是用C++做项目没有发现有什么障碍.至少都够用了.C++这所以难,个人认为是工具导致的.
C++原先的组成相当易懂,可后来为了代码重用,冒出个template来.这下好啦.前辈头痛,后进跟着傻了.
其实,你如果不考虑代码重用.不用template,就当它没生过,而是沿用旧的模式做事,C++其实很容易!
创造出template来,是个了不起的发明!问题是工具没有跟上.让人不知道它背后发生了什么.一层的template多数人都还可以理解它如何如何.二层,三层...正常人都没有几个能记住哪些template参数,到底谁跟谁.但是如果有个工具
帮你将template转换成一般的方式表现出来,那就不一样了.这等同逆向工程.让你自己看看template最后生成的代码是个什么样.其实它长的样子就是用传统的C++基本语法写的程序一模一样.背地里,搞不好编译器就把它当作宏替换来处理都不一定.我很少使用template,不是我不理解它什么用,而是我记不住那么多东西,如果有工具帮我的话,我一定好好用它.VC环境还是没有做到很好,复杂一点的template它就没有自动列出其中的成员.

记得学自学电子电路,有句话说得很好,分析一个电路功能的时候,先把功能性的构成提取出来.而暂不考虑为了提高电路性能而存在的构成.这样你就容易分析电路它所实现的功能了.

同样地,写程序也可这样来写:先用最好理解的方式写好功能,效率问题留以后再考虑.这样就轻松了.

我理想中的程序编辑器应该是没有什么搜索替换,函数参数顺序的变更只要鼠标一拖一放,其它有牵涉到这一变化的需要变动的都应交由IDE在后台自动处理才是完美的.还有...很多都应交由IDE在后台自动处理.

最后.C++之所以难,我个人还是认为责任应在工具没有跟上!

一家之言,欢迎探讨
QQ:957550528
E-mail:yxmmrwx@hotmail.com


Vesslan_WangQi 2008-03-08
  • 打赏
  • 举报
回复
支持
加载更多回复(18)
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-08 11:11
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下