语言 重量计算_C++学习路线之C++语言本尊

欢迎加入群聊:C++ 编程2群 711049242

我的微信:454052811    欢迎加我微信一起学习交流

1、概述

本文是想对初入坑使用C++开发的朋友,介绍下对C++的理解,同时介绍对如何C++进阶修炼学习路线的理解。

C++ 是什么

  • C++是一门久负盛名的历史悠久的计算机编程语言。

  • C++ 从1980年一直不断和发展迭代到现在依然充满活力,它有40岁了。

  • 举不胜举的项目由c++来实现。

  • 虽然很多领域有新的语言出现,试图代替C++,但作为工程师,C++依然值得我们花时间去学习。

C++ 是怎么样的语言?

我们知道近代开始,中华文明势衰,影响力逐渐从东北亚,东南亚,中南半岛,北方世界收缩到本土,

当然现在中华文明在复兴,影响力也开始在全球增长,今天我们不了这个说整体。

我们知道英国其实全称:大不列颠及北爱尔兰联合王国。其实是由不列颠群岛中的英格兰、威尔士和苏格兰以及爱尔兰岛东北部的北爱尔兰组成的联合王国。

b89bbd0b10308e8dfa15b9fa2fe57f8d.png

C++其实是由传统的C,对面对象C++编程,泛型编程C++,STL 容器算法等组成的联合王国。

每一种语言内有自己不同的准则和特点。

PS:

  • 编程语言是为业务服务的。

  • 再精通编程语言,但不能实现具体的业务需求都不是真的技术好。

应用领域

  • 服务器端开发:很多游戏或者互联网公司的后台服务器程序都是基于C++开发的,而且大部分是linux操作系统

  • 游戏:目前很多游戏客户端都是基于C++开发的,除了一些网页游戏可能不是,这个领域需要学习的东西就比较多,比如计算机图形、多媒体处理。

  • 虚拟现实:这个领域一直在发展,目前VR眼镜比较火,需要大量基于这些的C++开发。

  • 数字图像处理:像OpenCV的视觉识别等等。

  • 科学计算 在科学计算领域,FORTRAN是使用最多的语言之一。但是近年来,C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。

  • 网络软件  C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方都有应用。比如GOOGLE的chrome浏览器,就是使用C++开发。

  • 分布式应用

  • 操作系统 在该领域,C语言是主要使用的编程语言。但是C++凭借其对C的兼容性,面向对象性质也开始在该领域崭露头角。

  • 设备驱动程序

  • 移动(手持)设备

  • 嵌入式系统。

2、学习路线

第一阶段

目标
  • 掌握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++ 中智能指针的掌握与理解,其核心是理解并且剖析过相应的源码,  这三个是最核心的智能指针。 scoped_ptr。

  • STL 源码:对于 STL 中的容器剖析,常见容器有 list、vector、stack、queue、map  等,考察自动扩容的原理、map 的底层实现(RBtree),源码是必须手动至少剖析一遍的。

  • 对于迭代器、空间配置器的理解,比如:一级空间配置器、二级空间配置器的运用场合分别是什么?一二级空间配置器的本质是什么,如何用内存池去管理?所存在的问题又有哪些,源码又是如何实现的等等,这些问题都需要去思考。

  • 设计模式:

    • 设计模式基本原则、依赖倒置和迪米特法则、

    • 单例模式_懒汉式和饿汉式、懒汉式遇上多线程问题、

    • 简单工厂模式、模板、命令、责任链、策略、中介、观察者、访问者、状态、解释器、迭代式模式等等。

    • 主要是学习设计模式的思想、几种常见模式是必须写代码实现的,其他设计模式理解思想,。

推荐书目
  • 泛型编程与STL。

  • STL源码剖析 (容器、迭代器、算法、函数对象乃至分配器的实现技巧)

  • C++Templates

  • C++设计新思维  Andrei Alexandrescu

  • 设计模式

  • The Design and Evolution of C++

  • C++ 沉思录

  • 深度探索C++对象模型(专注C++底层机制 优化代码 侯捷译)【必读】

  • xceptional C++:47个C++工程难题、编程问题和解决方案【选读】

  • More Exceptional C++:40个新的工程难题、编程疑问及解决方法【选读】C++程序设计语言(第1-3部分)(原书第4版) 【字典查阅】C++程序设计语言(第4部分:标准库)(原书第4版)【字典查阅】C++标准库(第2版) (Nicolai M.Josuttis) 【字典查阅】

第四阶段

  • 我猜的

  • 随心所欲不逾矩。

  • 这阶段我就不乱说了。

  • 你们来吧


3、C++世界的现有轮子

常用库

在实际项目中,通常有些功能不需要重复造轮子,已经有十分完善的代码库可被拿来直接使用,所以我们要善于利用已有的资源。

  • 日志库

  • ini库

  • json库

  • 数据库库

  • 网络库

  • 业务特定的库

linux平台(unix)

目标

Linux系统编程、网络编程:

  • 进程环境、进程控制、信号和信号处理、多进程。

  • 进程之间通信:文件、管道、FIFO管道、消息队列、信号量、共享内存、socket编程。

  • 线程、多线程、线程同步使用互斥量、线程同步使用读写锁。条件变量、信号量。

  • 文件I/O文件管理、流I/O。

  • 特别要理解这几个进程之间通信的原理、特征优缺点。

推荐图书
  • UNIX环境高级编程

  • UNIX网络编程

跨平台Qt编程

目标
  • 使用Qt实现跨平台UI开发

推荐图书
  • Qt Creator 快速入门

  • Qt高级编程

C++  这条语言之路,有可能看上去坎坷,但爬得高,走得远,沿途的风景漂亮,愿伴你同行!

a7364eb4d569268090a412e50d4cc86b.png

希望三连 点赞,关注,在看~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值