如何高效学习C++?

Posted LCBC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何高效学习C++?相关的知识,希望对你有一定的参考价值。

新手小白如何系统地学习C++呢?先来看看这份学习路线吧。



1

掌握C++语言本身


C++和C语言虽然是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用、扩展和工程化,这是大型项目的必备要素。


对于C语言来说,需要了解最基础的语法诸如变量/循环/字符串等等,那学习C++的就需要在这个基础上增加对面向对象(封装、继承与多态)特性、泛型、模板、STL等等内容的学习。


从应用角度来看,C++多用于开发各种后台使用的算法和逻辑库。而C语言则更底层,主要用于开发更核心的算法、驱动程序和控制程序等。

不过,C和C++的学习路径大体相同,可以简单分为五大类:算法和数据结构、面向对象思想、基本语言知识、产品开发、与其他语言混合开发。在这个分类之下还有一些更细致的内容,如图所示:


C/C++是更快、更底层的语言,要想高效使用C/C++语言,还需要掌握更多的算法和数据结构的知识,以及操作系统和多线程的知识。尤其是操作系统的知识,因为程序最终要运行在操作系统上。例如,如何读取一个文件的时间属性,如何读取键盘的特定键,如何建立一个目录等,这些都与程序运行的平台(操作系统) 有紧密的关系。


对这些知识了解得越多,就越能编写出高效、简洁的C/C++语言程序。如果要编写一个大规模的程序,还需要具备设计模式的知识。


除此之外,大中型的程序一般都是混合利用多种语言来开发的。这样就可以充分发挥各种语言的优点。例如,为了得到更好的界面,一般都会采用C#和Java进行开发,而核心的算法和靠近硬件的部分则需要采用C/C++语言编写。


要想真正融会贯通,一定要知道一些C++与其他语言混合开发的知识,例如C++/CLI, 或者是COM组件的知识。


2

必备的编程基础能力


对零基础的小白来说,编程基础四大件是无法避开的:数据结构和算法、计算机网络、操作系统、设计模式。


1.数据结构与算法

我们需要将几种基础数据结构类型烂熟于心,比如:字符串、链表、二叉树、堆、栈、队列、哈希等;基本的几大算法也要了如指掌,比如查找、排序、动态规划、分治等等。


2.计算机网络

此处的计算机网络指的就是TCP/IP协议栈,可以说它是当下互联网通信的基石,无论如何一定要对TCP/IP的协议栈了如指掌,主要就是学习和掌握原理,包括:ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议。


3.操作系统

操作系统会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,大家就应该能做点东西出来、或者说能看懂一些实际项目的代码。而在实践应用部分,有两个技术应该需要我们去掌握:


(1)操作系统的使用

很多人初学C++都是在Windows环境上进行的,在Linux系统上的实际应用也非常重要。先谈使用,这一部分包括常见的Linux操作命令、基本的Shell编程等。


(2)编译/调试工具

首先是跟编译相关的:编译工具


Linux平台上的编译器非常重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。


其次,大家自学C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!


最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。


4.设计模式

设计模式中常见的设计模式诸如单例模式、工厂模式、代理模式、策略模式、模板方法模式建议熟练于心。


学习C++其实最关键的地方就是需要一个“领路人”。有了导师作为指路的明灯,帮你迅速的认清C++学习中会遇到的困难和问题和对应的处理方法。带领着大家真正高效系统的学习运用C++!

联系方式:

王老师 曹老师187-8228-2258

以上是关于如何高效学习C++?的主要内容,如果未能解决你的问题,请参考以下文章

创建一个高效的函数

一个高效易用的分布式机器学习框架

如何高效的学习python

ARTS 如何高效学习

如何高效学习JavaScript? JavaScript学习方法!

如何高效学习和工作(撸代码)