想通过一个C++的实例来学习C++,大家有什么好建议呢

供稿:hz-xin.com     日期:2025-01-13
C++博大精深,岂是两三个例子就可以弄懂的???
建议如下:
(一)语言入门:

《C++ Primer》
最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)
适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。
《The C++ Programming Language》/《C++程序设计语言》
最新版本:第三版特别版
简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)
《Essential C++》
《Accelerated C++》
这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。
以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。

(二)进阶A:
这个路线侧重于语言本身
《Effective C++》
最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)
简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》
个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。
我的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不会过时,人们将广为传诵它制定的101条戒律。
还不知道他的简称,也许“101”会成为一个候选者?
提到《Effective C++》,那么另外三本书一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新书《Exceptional C++ Style》也是值得一看的好书。
上述几本书,一本也不应该放过。
个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

(三)进阶B:
这个路线侧重于程序库。
《The C++ Standard Library》/《C++标准程序库—自修教程与参考手册》
听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。
《Effective STL》
会使用STL还不够,还必须知道什么时候选择什么STL组件,这是STL使用的必读书。
《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型编程与STL》。
这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。
《C++ STL》
这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。
这个路线的书,仍然是建议按顺序阅读。
进阶A、进阶B两个路线应该是可以并行的。

其他进阶参考书
提出这些参考书,只是避免争议,也为开阔视野,笔者并不曾完全读过所有的。
《Thinking in C++》/《C++编程思想》
这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试一下该书。
以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。
《C++必知必会》
如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》
这又是一本我未曾读过,而且广受好评的书。
《STL 源码剖析》
这本书我刚到手,就被人"借"走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。
高级:
《The Design and Evolution of C++》/《C++语方的设计和演化》
简称D&E,内容并不艰深,Bjarne的书,仅此,就值得一读。
前段时间,互动网曾8块一本(人民币)贱卖此书,现在好像没了。
《Inside The C++ Object Model》/《深度探索C++对象模型》
C程序员读后一定会觉得C++原来并不神秘。
《C++ Template》
在阅读STL、Boost或者Loki的源代码之前,请仔细阅读本书,它可以减轻一些阅读的烦恼。这本书是讨论C++模版的权威。

想通过一个C++的实例来学习C++,大家有什么好建议呢
简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。《C++ Coding Standards: 101 Rules, Guid...

C++ 实例:打开一个网页"www.baidu.com"
用的是void CWebBrowser2::Navigate(LPCTSTR URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers)这个函数……有兴趣,可以发给你

如何正确的通过 C++ Primer 学习 C++
c\/c++尤其适合这句话,如果下定决心要学c\/c++,那么就不要有速成的思想 多敲代码,多思考 多敲代码,多思考 多敲代码,多思考 以上3点就是提高c\/c++编程能力最捷径的方法了 编程提升技巧:1、重写算法,选一个算法(如排序),查看并敲写所有现有的算法。然后思考有没有更好的办法,或者换一个...

如何更好的利用《C++ Primer》学习C++
Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程。面向对象设计 。虽然面向对象可能是个骗局。但是我觉得面向对象设计中的一些实践非常的不错,比如,单一原则,依赖倒置原则,等等,都非常地经典。《设计模式》必需一读,《面向对象的分析和设计》可以一读。但不可以设计模...

c++模板学习:一个例子搞懂SFINAE
在深入探讨C++模板编程中的关键概念SFINAE(Substitution Failure Is Not An Error)之前,首先需要了解模板编程的基本框架。SFINAE是一种编译器特性,它允许在模板实例化时,如果某个参数类型不满足所需的条件,编译器将忽略该实例化过程,而不引发任何错误。这在实现灵活、类型安全的模板函数时尤其有用。假...

如何正确通过 C++ Primer 学习 C++?
介绍 c primer plus算是c语言的经典教材了,用来作为进入编程世界的第一本书是完全没有问题的。不要生吃!不要生吃!纸上谈兵学编程是最蠢的一种方式,尤其是题主作为萌新,恰恰是最需要大量基础训练的时期。我的建议是尽量在有电脑的环境下阅读本书,对书上的每一个例子最好都能自己敲出来运行一遍...

主要特点及具体实例
1. C++程序实例下面通过一个简单的例子认识 C++程序。程序名为 hello.cpp。 一个简单的 C++程序。 #include <iostream.h> void student(char *s) { cout << "I am a "<<s; } void main() { cout << "hello world!"<<endl; \/\/ 输出字符串 "hello world!" student("student"); \/\/调用 studen...

C++入门(一)——初识C++&&输出一个四行*的等腰三角形
最终输出为6和8。为了实践C++的强大功能,让我们通过一个具体案例来展示如何使用C++输出一个四行*的等腰三角形。运行结果将展示一个简单的等腰三角形,每行由星号(*)组成,共四行。这不仅展示了C++的基本输入输出能力,同时也体现了其在图形化输出上的潜力,为后续深入学习C++打下坚实的基础。

...学习编程四大误区之一:就是通过MC IDE VC++来学习C++是走了...
网络上有种说法,学习编程四大误区之一:就是通过MC IDE VC++来学习C++是走了弯路; 感觉大学里边学不到编程的深入一点的东西。甚至连VC++很多强大功能都不会用。语言也不通。而副教授却说,我们教给你们的是思想;VC++只是一种工具?你们是怎样理解的呢?难道学习VC++... 感觉大学里边学不到编程的深入一点的...

现代C++学习——实现一个std::function
通过使用std::function,一个void()类型的函数可以接受不同类型的参数,只要这些参数的函数类型为void()即可。这实质上是一种多态性的体现。实际上,std::function的实现与std::any十分相似,都需要一个内部类来支持多态。除了需要重载()运算符,其构造函数的实现也遵循与std::any相同的逻辑,包括如何...