3599.00 3999 优惠价

7天可退款

服务
系统学习
24周
教学服务
12个月
教学模式
学练一体化
课程证书
通过得证书

课程大纲及学习周期安排

坚持学习的路上,我们为你画好成长路标

阶段一:C++面向对象编程在工程实战中的应用

  • 第1周
  • 第2周
  • 第3周
  • 第4周
  • 第5周
  • 第6周
  • 第7周
课程简介、环境准备及面向对象的精髓

本周介绍本课程的定位、价值和学习本课程需要的准备知识、环境搭建;并通过面试题来介绍面向对象思维的本质及纠正一些对面向对象编程经典错误的理解。

课程安排
  1. 1、本课程的价值、学习的前置知识、学习的目标和注意事项
  2. 2、Windows C++环境的搭建
  3. 3、Mac C++环境的搭建
  4. 4、Linux Ubuntu发行版环境的搭建
  5. 5、QT环境的搭建
  6. 6、HelloWorld从面向过程编程到面向对象编程的过渡
  7. 7、从微软公司的一道面试题来谈从面向过程到面向对象
  8. 8、从面向过程编程到面向对象过渡的理论分析
  9. 9、面向对象三大特性及实现一个不能被继承的类
  10. 10、少用继承及接口继承的使用
  11. 11、少用虚函数及函数指针代替虚函数的方案
  12. 12、面向对象编程的两个常见错误理解
  13. 13、C++避免钻石继承的方法--虚继承
从工程角度从新审视类的构造,赋值等

通过编写MyString类的3个构造、2个赋值和1个析构,从本上解析C++中比较难以理解但又十分重要的一些概念:隐式转换、左值、右值、左值引用、右值引用及C++11重要的特性move语义。

课程安排
  1. 1、怎么实现一个MyString的Class
  2. 2、Class的321实现
  3. 3、MyString的move基本实现
  4. 4、总结--C++面向对象编程对
  5. 5、再看类MyString的构造实现
  6. 6、防止构造函数的隐式转换类型
  7. 7、C++的值类型和引用类型
  8. 8、一些重要概念:左值、右值、左值引用、右值引用等;
  9. 9、左值右值相关
  10. 9、move语义的意义和使用细节
深度剖析对象的建立过程及优化

从最佳工程的角度解析C++对象创建的过程、说明构造函数的本质,RVO的返回值优化、const关键词的优化等。

课程安排
  1. 1、编译器优化与mov的语义的关系及返回值优化
  2. 2、返回值优化:RVO和NRVO
  3. 3、返回值优化策略的选择
  4. 4、const的基本使用
  5. 5、const的修饰对象的引用和函数
  6. 6、const、mutable和volatile
  7. 7、再谈构造函数--什么该做什么不该做
  8. 8、再谈构造函数--初始化顺序和参数列表
  9. 9、静态成员变量的初始化
  10. 10、CPP11中委托构造函数的使用
函数和表达式本质

重点解析函数重载、运算符重载;函数对象、lambda和inline函数的本质及它们的使用场景。

课程安排
  1. 1、函数重载
  2. 2、重载函数的本质和实现原理
  3. 3、运算符重载
  4. 4、Rational类的实现
  5. 5、Rational类的运算符重载实现
  6. 6、函数对象的本质是什么
  7. 7、函数内部怎么定义函数--lambda表达式
  8. 8、Lambda表达式实现闭包
  9. 9、Lambda表达式和函数对象使用的类比
  10. 10、Lambda表达式的意义
  11. 11、inline内联函数的使用和本质
C++内存分配:堆和栈的详细分析

重点解析C++内存管理的细节,堆和栈及C++推崇的资源分配RAII在实际项目中的运用。

课程安排
  1. 1、几道面试题来看堆和栈在内存分配和传递
  2. 2、几道面试题来看堆和栈在内存分配和传递2
  3. 3、CPP的内存世界划分
  4. 4、从一个经典函数错误起谈谈栈空间调试
  5. 5、汇编调试基础1
  6. 6、汇编调试基础2
  7. 7、从汇编角度看程序函数栈和main函数流程1
  8. 8、从汇编角度看程序函数栈和main函数流程2
  9. 9、从堆栈角度来分析ShellCode和软件安全1
  10. 10、从堆栈角度来分析ShellCode和软件安全2
  11. 11、C++中资源分配的方式:RAII
  12. 12、析构函数为什么是虚函数及RAII的具体使用
  13. 13、在异常情况下RAII如何保证资源的顺利释放
C++智能指针、异常、new及对象模型

解析在C++中如何实现智能指针、及C++中异常的使用、new运算符的本质及C++对象模型内部真实的结构。

课程安排
  1. 1、怎么实现智能指针
  2. 2、C++中常见的智能指针
  3. 3、C++中到底该不该用异常
  4. 4、怎么用异常
  5. 5、new的实现细节,如果new失败了怎么办,工程中怎么处理new
  6. 6、从底层分析C++中虚函数的本质
  7. 7、C++对象模型初步
  8. 8、动态多态和静态多态
  9. 9、C++的模板编程
  10. 10、C++11中对模板编程的高级支持
实现C++跨平台爬虫实战

利用上面所学的知识结合一些QT的库,完成一个跨平台的C++爬虫程序。

课程安排
  1. 1、爬虫需求分析
  2. 2、QT的基本使用,工程创建等
  3. 3、QT怎么实现一个简单的跨平台爬虫
  4. 4、爬虫的网络类实现
  5. 5、爬虫的数据处理和数据存储
  6. 6、爬虫的整体逻辑
  7. 8、爬虫的测试、存在待改进的问题

阶段二:C++面向对象设计模式精讲

  • 第8周
  • 第9周
  • 第10周
  • 第11周
面向对象设计模式初步及创建型模式

介绍面向对象设计模式的本质、详解实际解决的问题及创建型的设计模式在工程中的运用。

课程安排
  1. 1、面向对象设计模式的定义,什么时候该使用设计模式
  2. 2、一个实例说明设计模式的本质
  3. 3、面向对象设计模式的分类
  4. 4、除了面向对象设计模式,还有什么模式
  5. 5、反模式
  6. 6、单例模式及单例模式实现的坑
  7. 7、单例模式的例子: 日志和全局配置类
  8. 8、抽象工厂模式及示例
  9. 9、Builder生成器模式及示例
  10. 10、工厂方法模式及示例
结构型模式和行为型模式

详解结构型的设计模式和行为型模式在实际工程中的使用场景和运用。

课程安排
  1. 1、适配器模式及示例
  2. 2、如何使用适配器模式搭建一个插件体系
  3. 3、装饰器模式及示例
  4. 4、组合模式及示例
  5. 5、代理模式及示例
  6. 6、观察者模式及示例
  7. 7、各个框架中的观察者模式例举
  8. 8、模板方法模式及示例
  9. 9、命令模式及示例
  10. 10、解释器模式及示例
  11. 11、策略模式及示例
  12. 12、迭代器模式及示例
  13. 13、职责链链模式及示例
  14. 14、备忘录模式及示例
  15. 15、状态模式及示例
  16. 16、访问者模式及示例
STL和设计模式

通过对C++基础类库STL的架构设计的理解讲述STL的使用和其常见的设计模式。

课程安排
  1. 1、STL的设计架构和思想
  2. 2、STL中的常见容器
  3. 3、STL中的常见算法
  4. 4、STL的设计模式选讲:迭代器模式
  5. 5、STL的设计模式选讲:适配器模式
QT设计模式和爬虫项目的设计模式版本

通过对QT的架构设计的理解讲述QT常见的设计模式及使用设计模式改进之前的爬虫项目。

课程安排
  1. 1、QT中的信号和槽机制
  2. 2、QT事件处理机制
  3. 3、QT中的观察者模式和命令模式
  4. 4、使用设计模式将爬虫代码进行重构:使用模板方法模式、观察者模式和适配器模式等;

阶段三:C++ QT编程

  • 第12周
  • 第13周
  • 第14周
  • 第15周
QT的基础和UI组

介绍QT框架的历史、使用场景、QT的设计思想及QT常见的UI组件如何使用。

课程安排
  1. 1、QT的历史介绍和应用场景
  2. 2、QT的对象体系和架构原理
  3. 3、QWidget的介绍
  4. 4、QT的UI组件和QML介绍
  5. 5、QT的常见类库介绍
  6. 6、QLayout布局的使用及示例
  7. 7、QBoxLayout的使用及示例
  8. 8、QGridLayout的使用及示例
  9. 9、QMainWindow的使用及示例
  10. 10、对话框QDialog的使用及示例
  11. 11、QLabel的使用及示例
  12. 12、QListView的使用及示例
  13. 13、QTreeView的使用及示例
  14. 14、 QMenuBar的使用及示例
  15. 15 、 QSta ndardItemModelde的使用及示例
  16. 16、QAction的使用及示例
  17. 17、 QFileSystemModel的使用及示例
QML编程、文件IO和数据库操作

详解QML语言的架构、设计和使用方法、QT的IO和关系数据库的基本使用及在QT中的实战。

课程安排
  1. 1、QML语言概述和基本语法
  2. 2、QML元素和属性
  3. 3、QML的布局和组件
  4. 4、QML的信号和槽机制
  5. 5、QML和C++的交互
  6. 6、QT的文件和目录操作
  7. 7、读写文本文件和二进制文件
  8. 8、QT中数据库模块基本使用
  9. 9、QT数据库连接和操作
  10. 10、SQL查询和结果处理
  11. 11、爬虫中使用Sqlite存储数据
QT正则表达式及多进程多线程编程

介绍正则表达式的基本使用及在QT中的实现、多进程多线程的基础知识及QT中如何使用多进程多线程进行编程。

课程安排
  1. 1、正在表达式初步
  2. 2、正在表达式实践
  3. 3、QT中的正则表达式
  4. 4、爬虫项目中使用正则表达式进步一匹配进行
  5. 5、正在表达式存在问题的探讨
  6. 6、操作系统基础、进程、线程的本质
  7. 7、僵尸进程、孤儿进程
  8. 8、QProcess进程的实践
  9. 9、QThread线程实践
  10. 10、著名的哲学家问题及解决
  11. 11、进程间通信和线程间通信问题
  12. 12、QMutex类的使用
  13. 13、QSharedMemory类的使用
QT网络编程和其他高级编程

详解TCP/IP网络架构、并详解在QT中实现网络编程的方法。

课程安排
  1. 1、QT的网络编程模块
  2. 2、网络基础知识
  3. 3、TCP和UDP通信协议和原理
  4. 4、HTTP协议和HTTPS协议,顺便说说爬虫的理论基础
  5. 5、网络数据传输和编解码
  6. 6、编码和国际化问题、本地化多语言问题
  7. 7、QT动画和过渡效果
  8. 8、QT绑定和模型视图编程
  9. 9、QT的自定义组件和样式
  10. 10、QT的多媒体处理
  11. 11、QT对单元测试和自动化测试的支持

阶段四:跨平台浏览器项目实战

  • 第16周
  • 第17周
  • 第18周
  • 第19周
  • 第20周
项目架构及Kernel部分的开发

分析跨平台浏览器项目的详细设计,并实现核心kernel部分的代码。

课程安排
  1. 1、项目整体设计,各个组件的说明
  2. 2、目各个组件的通信方式:User Interface、Kernel、File System、DataBase和Plugin Manager
  3. 3、项目中使用的一些设计模式
  4. 4、核心逻辑的设计和开发
  5. 5、和各个组件接口部分的开发
  6. 6、前进、后退的命令模式开发
  7. 7、添加、编辑和删除书签
  8. 8、下载功能的管理
UI部分开发

手把手讲解跨平台浏览器项目的UI部分代码的开发。

课程安排
  1. 1、Menu菜单的开发
  2. 2、多个Views的布局部分开发
  3. 3、View的右击菜单等部分开发
  4. 4、URL地址栏开发
  5. 5、用户界面定制部分开发
  6. 6、多语言功能的保证(英语、汉语)
浏览器项目DataBase等开发

手把手讲解跨平台浏览器项目DataBase和File System部分的开发。

课程安排
  1. 1、用户数据的表设计
  2. 2、用户数据表的存储
  3. 3、用户数据数据表的查询、修改和删除
  4. 4、添加、编辑和删除书签
  5. 5、日志系统的开发
  6. 6、cookie管理的开发和设计
  7. 7、历史记录部分开发
  8. 8、页面缓存的设计和开发
用户登录和加密部分组件开发

手把手讲解跨平台浏览器项目Plugins Manger部分和爬虫、截图插件部分的开发;并手把手讲解用户登录和加密组件的的开发。

课程安排
  1. 1、Plugins Manager的设计和开发
  2. 2、爬虫插件的开发和集成
  3. 3、截图插件的开发和集成
  4. 4、多用户登录的设计
  5. 5、跨平台兼容开发
  6. 6、UI交互的开发
  7. 7、加密算法的开发
自动化测试用例的开发及其他一些特性

手把手讲解跨平台浏览器项目自动化测试用例的开发;并讲解用广告和云端同步的功能户登录和加密组件的的开发。

课程安排
  1. 1、自动化测试框架编写
  2. 2、自动化测试用例设计和开发
  3. 3、去广告特性的设计
  4. 4、云端服务、多客户端共享数据部分的设计

阶段五:系统层知识进阶

  • 第21周
  • 第22周
  • 第23周
数据表达底层原理和操作系统、进程和线程

深入剖析计算机内部数据和数学的底层原理、操作系统进程、线程的本质和一些常见误区的解释。

课程安排
  1. 1、程序计算和数学计算的区别
  2. 2、溢出问题
  3. 3、编程中常见的判断错误和死循环问题
  4. 4、C++怎么处理大数运算
  5. 5、C++指针引发的各种问题举例
  6. 6、虚拟内存是什么
  7. 7、共享内存是什么
  8. 8、C++对进程、线程的支持:thread、process、mutex和condition_variable
  9. 9、怎么让进程和线程可控、进程的调度和资源管理
  10. 怎么避免死锁
  11. 信号量和银行存取款问题
网络编程、国际化和数据库操作

详解TCP/IP的一些协议细节、网络数据传递的字节序问题、UTC问题,国际化的处理;详解关系数据库的原理及对未来大数据处理的一些形势分析。

课程安排
  1. 1、TCP/IP编程
  2. 2、网络套接字socket编程
  3. 3、网络字节序问题
  4. 4、编码总结,怎么写出全世界人都可用的软件
  5. 5、怎么处理UTC,chrono和ctime的使用
  6. 6、关系型数据库和非关系型数据库
  7. 7、常见的数据库和数据库管理系统
  8. 8、数据库、表、字段等概念
  9. 9、SQL语句基础:CURD
  10. 10、数据库设计,各种范式简介
  11. 11、主键、外键
  12. 12、索引
  13. 13、视图
  14. 14、事务
  15. 15、数据查询优化
  16. 16、大数据的原理和展望
译系原理解析和C++代码优化

详解编译器的实现原理,并结合编译器知识分析对C++代码优化的逻辑和思路。

课程安排
  1. 1、词法分析Lexical Analysis原理
  2. 2、语法分析Syntax Analysis原理
  3. 3、语义分析Semantic Analysis原理
  4. 4、代码生成Code Generation的全过程
  5. 5、C++编译、链接等过程分析
  6. 6、编译器优化原理
  7. 7、代码优化的思路和基本原则
  8. 8、算法的评估和数学原理
  9. 9、实例说明数据结构的选择
  10. 10、实例说明算法优化
  11. 11、空间换时间、时间换空间的示例
  12. 12、C++汇编层面代码分析优化,为什么switch的效率比if语句高

阶段六:C++新特性及就业指导

  • 第24周
C++新特性和就业方向解析

分析C++11还有哪些值得关注的新特性并剖析C++17、20等未来C++语言的发展方向和趋势,指导未来技术和就业方向。

课程安排
  1. 1、auto/decltype关键词的使用
  2. 2、C++11的智能指针
  3. 3、基于范围的for循环
  4. 4、Lambda表达式可能引引起的革命
  5. 5、编译时求值:constexpr
  6. 6、编译时断言:static_assert
  7. 7、C++17的结构化绑定、折叠表达式、if初始化语句
  8. 8、C++ 20的Ranges数据序列处理的未来
  9. 9、C++ 20的Bit library可能带来的生产力
  10. 10、C++ 23、C++26的未来方向
  11. 11、C++到底要把自己变成一门什么样的语言

评价 好评

  • 我觉得赵老师拥有辩证的思维给您讲课,他不会说怎么样就一定好,怎么样就一定规范,怎么样就一定成立。什么事都是在一定条件下成立的,条件变了,好也许会变成坏,规范也许会变成不规范,成立也许会变成不成立,他会带你去思考好坏,规范,成立与否背后的条件。让你不再纠结怎么写代码是最好的。我觉得这是赵老师可贵的地方。

  • 终于等到出c++就业课了,讲解细致,适合提升。

  • 我懂一些c++语法,但是实践经验少,这次跟大牛学能提升技术是一方面还能学到大厂规范和好的编程习惯是我最大的感受,发现很多我以前忽略的细节,纠正不少编程规范,慕课网以后要多找这种大牛多出点C++高级教程,帮我们涨薪,一定买。

预售规则

1. 定金支付成功后,可在“我的订单”-“未支付”栏查看所要支付尾款的订单。
2. 尾款支付开启后,请在规定时间内支付尾款,若超出尾款支付时间,订单将自动关闭。请关注短信、慕课网平台及慕课网微信号等渠道推送的提醒消息。
3. 定金可在课程原价基础上抵扣页面显示金额,具体数额及计算方式见详情页。
4. 已支付定金但未在规定时间支付尾款的用户,定金不可退。
5. 如您对预售活动有其它疑问,请联系客服:kf@imooc.com。