想入坑学习C++开发的朋友,不知道你们的肝够吗?
下面我来简单介绍下我对C++的理解,同时介绍对如何C++进阶修炼学习路线的理解。
有不明白的小伙伴可以去下面去了解关于C++的具体知识!
C++是一门久负盛名的历史悠久的计算机编程语言。
C++ 从1980年一直不断和发展迭代到现在依然充满活力,它有40岁了。
举不胜举的项目由c++来实现
虽然很多领域有新的语言出现,试图代替C++,但作为工程师,C++依然值得我们花时间去学习。
C++ 是怎么样的语言?
C++其实是由传统的C,对面对象C++编程,泛型编程C++,STL 容器算法等组成的联合王国。
每一种语言内有自己不同的准则和特点。
PS:编程语言是为业务服务的。
再精通编程语言,但不能实现具体的业务需求都不是真的技术好。
应用领域
服务器端开发:很多游戏或者互联网公司的后台服务器程序都是基于C++开发的,而且大部分是linux操作系统
游戏:目前很多游戏客户端都是基于C++开发的,除了一些网页游戏可能不是,这个领域需要学习的东西就比较多,比如计算机图形、多媒体处理。
虚拟现实:这个领域一直在发展,目前VR眼镜比较火,需要大量基于这些的C++开发。
数字图像处理:像OpenCV的视觉识别等等
科学计算 在科学计算领域,FORTRAN是使用最多的语言之一。但是近年来,C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。
网络软件 C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方都有应用。比如GOOGLE的chrome浏览器,就是使用C++开发。
分布式应用
在该领域,C语言是主要使用的编程语言。但是C++凭借其对C的兼容性,面向对象性质也开始在该领域崭露头角。
学习路线
第一阶段
掌握c/c++ 基本语法
标准库的简单使用
c++ 面向对象编程基本语法和概念
泛型编程的基本知识
数组、指针、内存操作
预编译 指令用法
关键字static是啥?
引用的用法、
构造函数、析构函数、拷贝构造、
new、delete 和 malloc、free 的区别、
访问限定符 public、private、protected、
推荐书目
《C++ Primer 第五版》
C 程序设计语言、C 缺陷与陷阱、C 专家编程、C 和指针。
第二阶段
良好的编码风格:
代码像房子一样,放的久了也是风化的,需要不断维护。好的编程风格,使房子的材料更优质,架构更合理。
深入理解常见的基本概念:
深拷贝和浅拷贝、友元函数、内联函数、继承、虚继承、钻石继承问题、同名覆盖问题、虚函数表、虚指针、虚函数、纯虚函数、接口、多态、重写、重载、函数重载、运算符重载、流类库和文件。
STL 容器和算法库的熟练适用
标准库接口的熟练适用
数据结构 :线性表、链表、堆栈、队列、树((BinTree、BST、AVL、RBtree、B+、B-)、图等等。(建议:先从简单入手+视频+原理+原理+实现+应用)
如果有编码方面的问题,可以去下面的网课里寻找一些相关资料!
推荐书目
Effective C++ 第三版
More Effective C++
Effective STL Meyers
Google C++ Code Standard
再看《C++ Primer 第五版》
大话数据结构、数据结构(清华大学严蔚敏)、数据结构与算法分析(机械工业版)。
重构
第三阶段
熟悉设计模式
泛型编程
理解对象的内部实现
熟悉常用外部库 如网络库,json库,等等。
函数模板、类模板,C++ 中对于异常的处理,对于继承和多态底层的理解,对于 virtual 底层的理解等。在C++ 中 boost 库八大智能指针的掌握与理解,其核心是理解并且剖析过相应的源码, 这三个是最核心的智能指针。STL 源码:对于 STL 中的容器剖析,常见容器有 list、vector、stack、queue、map 等,考察自动扩容的原理、map 的底层实现(RBtree),源码是必须手动至少剖析一遍的。
设计模式:
设计模式基本原则、依赖倒置和迪米特法则、单例模式_懒汉式和饿汉式、懒汉式遇上多线程问题、简单工厂模式、模板、命令、责任链、策略、中介、观察者、访问者、状态、解释器、迭代式模式等等。
主要是学习设计模式的思想、单例模式是必须写代码实现的,其他设计模式理解思想,作为了解内容,后台开发工程师与 mysql 打交道挺多的,也是面试常见问题之一。
推荐书目
泛型编程与STL。
STL源码剖析 (容器、迭代器、算法、函数对象乃至分配器的实现技巧)
C++Templates
C++设计新思维 Andrei Alexandrescu
第四阶段
C++扩展知识
常用库
在实际项目中,通常有些功能不需要重复造轮子,已经有十分完善的代码库可被拿来直接使用,所以我们要善于利用已有的资源。
日志库
ini库
json库
数据库库
网络库
业务特定的库
linux平台(unix)
Linux系统编程、网络编程:
进程环境、进程控制、信号和信号处理、多进程。
进程之间通信:文件、管道、FIFO管道、消息队列、信号量、共享内存、socket编程
线程、多线程、线程同步使用互斥量、线程同步使用读写锁。条件变量、信号量
文件I/O文件管理、流I/O。
特别要理解这几个进程之间通信的原理、特征优缺点。
另外,想要学好C++,书籍是一方面,合适的网课跟严谨的态度也是必不可少的,我给大家推荐我目前正在看的网课。
学习C++的道路总不是一帆风顺,之所以和大家说了这么多,是想告诉大家,只要你有决心和意志,好好学C++并没有那么难。要成为一名程序猿,进入软件开发行业也没有那么难哦。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容