先放一张学习线路图:
对于初学者看到这张线路图可能有点晕。实际上耐心一点,有足够的毅力还是可以自学攻克C++这门语言的。
一、C语言
基础内容就是两块:基础语法和一个小游戏案例
进阶一点也是两块内容:C高级和数据结构。包括一些C语言的深入技巧,灵活应用C语言接口封装设计的方法;
主要学习知识点:
数据类型、变量、内存布局、指针基础;
字符串、一维数组、二维数组;
一级指针,二级指针,三级指针,N级指针概念,指针数组和数组指针;
结构体、文件的使用;
动态库的封装和设计;
函数指针回调函数。
C++和C的关系我不多解释了,有一些经验的大多数都知道。C语言基础相当于给C++打一个基础,培养编程兴趣,其次就是内存、编译和链接会帮助我们弄懂编程语言的内在。
课程分享:
C++| 匠心之作 从0到1入门学编程
轻松掌握C语言视频教程(会打字就能学会)
C语言小白入门基础教程
二、C++基础
这个阶段主要学习的就是四个模块:核心编程、模板于IO、STL、Qt;
这个阶段熟练掌握之后,基本就可以满足企业的开发初级需求了。
(1)基础内容
面向对象编程思想;
类的封装,构造和析构、静态成员、对象管理;
类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;
对象动态管理、友元函数、友元类、操作符重载;
C++编译器对象管理模型分析;
类对象的动态管理(new/delete);
友元函数和友元类;
运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);
类的继承、多继承及其二义性、虚继承;
多态(概念、意义、原理剖析、多态案例);
虚函数、纯虚函数、抽象类(面向抽象类编程思想案例);
函数模板、类模板,模板的继承;
C++类型转换;
C++输入输出流(标准I/O 文件I/O 字符流I/O);
C++异常处理(异常机制、异常类型、异常变量、异常层次结构、标准异常库);
(2)STL
STL = Standard Template Library,即标准模板库。这是提高开发效率的极品工具。通过学习此阶段,应掌握泛型编程技巧,理解容器类在C++语言中的应用模式,以及熟练掌握全部STL类的使用方法。
课程合集:
C++教程_C++教程视频_C++教程下载
http://yun.itheima.com/course/434.html
http://yun.itheima.com/course/539.html
三、Linux高并发服务器开发
学习的大模块有:Linux系统编程、Linux网络编程
linux服务器开发一-基础编程
完整视频:http://yun.itheima.com/course/207.html
linux服务器开发二-系统编程
完整视频:http://yun.itheima.com/course/201.html
linux服务器开发三-网络编程
完整视频:http://yun.itheima.com/course/211.html
这套课学完就掌握了。
四、Windows/Linux跨平台企业项目
学习内容:数据库和一个项目实践
C++的进阶也是一定要学的内容就是数据结构基础,程序组成的基础和进阶之一。
顺序存续、链式存储、循环链表;
双向链表、栈>顺序和链式、队列>顺序和链式;
栈的应用、熟的基本概念以及遍历、二叉树;
排序算法、并归算法、选择、插入、快速、希尔;
课程内容:
- C++与分布式数据库开发
- C/C++与数据库开发
五、游戏服务器开发
需要学习内容:zinx框架使用、游戏业务实现、zinx抽象框架实现、商业化部署;
暂时更新到这里,欢迎大家点赞+留言,不定期更新~~
六、C++学习网站
标准库
- C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
- Standard Template Library:标准模板库
- C POSIX library : POSIX系统的C标准库规范
- ISO C++ Standards Committee :C++标准委员会
框架
C++通用框架和库
- Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合
- ASL :Adobe源代码库提供了同行的评审和可移植的C++源代码库。
- Boost :大量通用C++库的集合。
- BDE :来自于彭博资讯实验室的开发环境。
- Cinder:提供专业品质创造性编码的开源开发社区。
- Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。
- Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。
- EASTL :EA-STL公共部分
- ffead-cpp :企业应用程序开发框架
- Folly:由Facebook开发和使用的开源C++库
- JUCE :包罗万象的C++类库,用于开发跨平台软件
- libPhenom:用于构建高性能和高度可扩展性系统的事件框架。
- LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO
- LibU : C语言写的多平台工具库
- Loki :C++库的设计,包括常见的设计模式和习语的实现。
- MiLi :只含头文件的小型C++库
- openFrameworks :开发C++工具包,用于创意性编码。
- Qt :跨平台的应用程序和用户界面框架
- Reason :跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。
- ROOT :具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。
- STLport:是STL具有代表性的版本
- STXXL:用于额外的大型数据集的标准模板库。
- Ultimate++ :C++跨平台快速应用程序开发框架
- Windows Template Library:用于开发Windows应用程序和UI组件的C++库
- Yomm11 :C++11的开放multi-methods.
人工智能
- btsk :游戏行为树启动器工具
- Evolving Objects:基于模板的,ANSI C++演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。
- Neu:C++11框架,编程语言集,用于创建人工智能应用程序的多用途软件系统。
异步事件循环
- Boost.Asio:用于网络和底层I/O编程的跨平台的C++库。
- libev :功能齐全,高性能的时间循环,轻微地仿效libevent,但是不再像libevent一样有局限性,也修复了它的一些bug。
- libevent :事件通知库
- libuv :跨平台异步I/O。
并发性
并发执行和多线程
- Boost.Compute :用于OpenCL的C++GPU计算库
- Bolt :针对GPU进行优化的C++模板库
- C++React :用于C++11的反应性编程库
- Intel TBB :Intel线程构件块
- Libclsph:基于OpenCL的GPU加速SPH流体仿真库
- OpenCL :并行编程的异构系统的开放标准
- OpenMP:OpenMP API
- Thrust :类似于C++标准模板库的并行算法库
- HPX :用于任何规模的并行和分布式应用程序的通用C++运行时系统
- VexCL :用于OpenCL/CUDA 的C++向量表达式模板库。
数据库
数据库,SQL服务器,ODBC驱动程序和工具
- hiberlite :用于Sqlite3的C++对象关系映射
- Hiredis: 用于Redis数据库的很简单的C客户端库
- LevelDB: 快速键值存储库
- LMDB:符合数据库四大基本元素的嵌入键值存储
- MySQL++:封装了MySql的C API的C++ 包装器
- RocksDB:来自Facebook的嵌入键值的快速存储
- SQLite:一个完全嵌入式的,功能齐全的关系数据库,只有几百KB,可以正确包含到你的项目中。
调试
调试库, 内存和资源泄露检测,单元测试
- Boost.Test:Boost测试库
- Catch:一个很时尚的,C++原生的框架,只包含头文件,用于单元测试,测试驱动开发和行为驱动开发。
- CppUnit:由JUnit移植过来的C++测试框架
- CTest:CMake测试驱动程序
- googletest:谷歌C++测试框架
- ig-debugheap:用于跟踪内存错误的多平台调试堆
- libtap:用C语言编写测试
- MemTrack —用于C++跟踪内存分配
- microprofile- 跨平台的网络试图分析器
- minUnit :使用C写的迷你单元测试框架,只使用了两个宏
- Remotery:用于web视图的单一C文件分析器
- UnitTest++:轻量级的C++单元测试框架
游戏引擎
- Cocos2d-x :一个跨平台框架,用于构建2D游戏,互动图书,演示和其他图形应用程序。
- Grit :社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。
- Irrlicht :C++语言编写的开源高性能的实时#D引擎
- Polycode:C++实现的用于创建游戏的开源框架(与Lua绑定)。
图形用户界面
- CEGUI : 很灵活的跨平台GUI库
- FLTK :快速,轻量级的跨平台的C++GUI工具包。
- GTK+: 用于创建图形用户界面的跨平台工具包
- gtkmm :用于受欢迎的GUI库GTK+的官方C++接口。
- imgui:拥有最小依赖关系的立即模式图形用户界面
- libRocket : libRocket 是一个C++ HTML/CSS 游戏接口中间件
- MyGUI :快速,灵活,简单的GUI
- Ncurses:终端用户界面
- QCustomPlot :没有更多依赖关系的Qt绘图控件
- Qwt :用户与技术应用的Qt 控件
- QwtPlot3D :功能丰富的基于Qt/OpenGL的C++编程库,本质上提供了一群3D控件
- OtterUI : OtterUI 是用于嵌入式系统和互动娱乐软件的用户界面开发解决方案
- PDCurses 包含源代码和预编译库的公共图形函数库
- wxWidgets C++库,允许开发人员使用一个代码库可以为widows, Mac OS X,Linux和其他平台创建应用程序
七、C++学习软件
用于创建开发环境的软件
编译器
- Clang :由苹果公司开发的
- GCC:GNU编译器集合
- Intel C++ Compiler :由英特尔公司开发
- LLVM :模块化和可重用编译器和工具链技术的集合
- Microsoft Visual C++ :MSVC,由微软公司开发
- Open WatCom :Watcom,C,C++和Fortran交叉编译器和工具
- TCC :轻量级的C语言编译器
在线编译器
- codepad :在线编译器/解释器,一个简单的协作工具
- CodeTwist:一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果
- coliru :在线编译器/shell, 支持各种C++编译器
- Compiler Explorer:交互式编译器,可以进行汇编输出
- CompileOnline:Linux上在线编译和执行C++程序
- Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。
调试器
- Comparison of debuggers :来自维基百科的调试器列表
- GDB :GNU调试器
- Valgrind:内存调试,内存泄露检测,性能分析工具。
集成开发环境(IDE)
- AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境
- CLion:来自JetBrains的跨平台的C/C++的集成开发环境
- Code::Blocks :免费C,C++和Fortran的集成开发环境
- CodeLite :另一个跨平台的免费的C/C++集成开发环境
- Dev-C++:可移植的C/C++/C++11集成开发环境
- Eclipse CDT:基于Eclipse平台的功能齐全的C和C++集成开发环境
- Geany :轻量级的快速,跨平台的集成开发环境。
- IBM VisualAge :来自IBM的家庭计算机集成开发环境。
- Irony-mode:由libclang驱动的用于Emacs的C/C++微模式
- KDevelop:免费开源集成开发环境
- Microsoft Visual Studio :来自微软的集成开发环境
- NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。
- Qt Creator:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。
- rtags:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成
- Xcode :由苹果公司开发
- 标准模板库:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。