C++自学精简实践教程

一、介绍

1.1 教程特点

  • 一篇文章从入门到就业
  • 有图有真相,有测试用例,有作业;
  • 提供框架代码,作业只需要代码填空
  • 规范开发习惯,培养设计能力

1.2 参考书

  • 唯一参考书《C++ Primer 第5版》​
  • 参考书下载:
    • 蓝奏云:C++_Primer_5th_Edition_English.pdf​

二、集成开发环境

三、 教程内容

1 基础部分

难度系数(1):*

1.1 变量和基本类型

1.1.1 变量和基本类型(V)

1.1.2 引用类型 reference type(V)

1.1.3 赋值语句 assignment statement(变量与常量const)(V)

1.2 标准输入输出 I/O

1.2.1 输出变量(cout与endl换行显示)

1.2.2 输入变量(cin 及字符串类型string)

1.2.3 名称空间 name space std

1.2.4 getline 读取一行内容

1.2.5 cin 扔给 getline 一个回车,程序炸了

1.2.6 输出格式化 format control

1.3 表达式

1.3.1 算术表达式 expression

1.3.2 整除/ 与 求余% 运算

1.4 关系和逻辑运算符

1.4.1 关系运算符和逻辑运算符 bool

1.5 for循环语句

1.5.1 for循环语句

练习1 说一万次我爱你(让计算机去做舔狗)(A)

练习2 数列前n项和 (计算机暴力计算)(A)

练习3 打印九九乘法表(双重循环) (A)

练习4 计算圆周率π(隐式类型转换)(高端大气上档次)(A)

1.6 if语句

1.6.1 if语句

练习 求一个数的绝对值

1.7 函数

1.7.1 函数function definition定义与调用call

1.7.2 栈变量的作用域

1.7.3 向函数传递参数(传值、传引用、传const引用)

练习1 求两个数的最大值max

练习2 交换两个变量的值 swap (A)

开发小助手:Visual Studio 2022 显示函数参数类型

1.7.4 模板函数 template function

练习3 输出正整数N各个位上的数字 (A)

练习4 求最大公约数 (A)

1.7.5 递归函数 recursive function :输出正整数N各个位上的数字

练习5 数列前n项和(递归函数)

练习6 判断一个数是否为素数(A)

Visual Studio 2022 调试Debug

10分钟学会Visual Studio调试C++程序(CMake版)(完整版,推荐!)

1.8 动态内存

难度系数(4):* * * *

到这里难度开始突然增加。建议你遇到不清楚的,一定要多问我。这是加速学习的唯一捷径!

1.8.1 堆heap栈stack与指针变量pointer(地址变量)

1.8.2 解引用 dereference operator

1.8.3 易混淆的符号&

1.8.4 向函数传递参数(传地址)

1.8.5 堆数组 heap array

练习1 本科生平均学分绩点GPA计算 (自顶向下设计+断点调试) (A)(V)

练习2 冒泡排序 Bubble Sort(提取函数)(自顶向下设计+断点调试) (A)(V)

2 标准库STL基础

难度系数(2):* *

这一部分难度一般,会用就行。你应该不会遇到太多问题。因为和其他语言也没区别。

标准库又叫标准模板库STL(Standard Template Library),是C++语言的一部分。

主要由三部分组成,分别是容器,迭代器,算法。

2.1 数组

2.1.1 数组 vector

练习 for循环求数组元素的最大值 (A)

2.1.2 字符串 string

2.2 迭代器

2.2.1 auto 关键字 (C++11)

2.2.2 迭代器 iterator

2.2.3 范围for循环(遍历数组的三种方式) (C++11)

2.2.4 C++标准库STL容器使用值语义

2.3 容器

2.3.1 链表 list 这个链接是官方示例教程,可以点开每一个子链接看里面的示例代码。示例代码都是最标准最典型的用法。我们应该学会从阅读官方代码中汲取营养,这个习惯应该尽早养成。

2.3.2 关联容器(字典) map

2.3.3 集合 set

2.3.4 标准库所有容器

2.4 lambda 表达式

2.4.1 lambda 表达式

2.5 算法

2.5.1 删除容器的元素 remove erase

2.5.2 快速排序(std::sort)

2.5.3 标准库所有算法

3 面向对象

难度系数(3):* * *

到了这里,类与对象是两个新概念,你可能觉得有点奇怪。但是他们是面向对象编程语言最有威力的设施。几乎没有之一。

3.1类与对象

3.1.1 类 struct/class 与 对象 object(A)

3.1.2 类的成员函数 member function 与类成员的访问控制(public private)

3.1.3 成员函数的声明 declaration 与定义 definition 分开

3.1.4 对象之间赋值 object assignment(对应成员逐个赋值)

3.1.5 struct与class(唯一的区别是访问控制)

练习 基于GPA排名计算本专业保研名单 (自顶向下设计+断点调试) (A)(V)

3.1.6 类的const成员函数

3.1.7 堆对象数组

3.1.8 指针成员操作符 member operator

4 复制控制(深拷贝)

难度系数(5):* * * * *

这里要求你同时掌握堆内存管理和面向对象。难度陡然增加。复制控制是C++的灵魂。C在这里产生了大量Bug,动态内存管理直接让Java产生的垃圾回收机制。

在C++里,你要用完全不同的方式独自处理他们。

遇到问题一定记得第一时间问我。你可以认为我24小时都在等待你的问题。

4.1 构造函数constructor

4.2 构造函数与成员变量初始化

4.2 构造函数成员初始化列表(member initializer lists)(待实现)

4.3 拷贝构造函数(copy constructor ) (浅拷贝)

4.4 非平凡的类与复制控制 (深拷贝 deep control)

4.5 类的静态成员变量 static member

Visual Studio 2022 调试Debug

3分钟掌握C++调试神器-调用堆栈 (V)

4.6 继承 inherit

4.7 多态 polymorphic 与虚函数 virtual function

5 输入输出I/O

难度系数(3):* * *

你之前肯定没有用代码操作过你本机电脑上的文件,这是一个操作性很强的章节。

有可能你创建了一个文件,也写入了内容,但你可能都不知道它在你电脑的哪个文件夹里。是的,你会遇到的。

还是那句话,遇到任何问题不要怀疑自己,直接来找我。

5.1 文本文件读写

5.1.1 输出变量的值到文件 write file

5.1.2 从文件读取变量的值 read file

5.1.3 从文件里一次读取一行 getline

练习1 读取文本文件中的神秘数据 (A)

5.2 字符串流stringstream

5.2.1 从字符串流 stringstream 中读取变量的值

6 操作符重载

6.1 输出操作符重载 operator overloading 与友元函数 friend

6.2 输入操作符重载 input operator overload

练习1 读取文件中的学生信息并显示 (自顶向下设计+断点调试) (A)(V)

6.3 小于操作符重载与对象排序

7 C++小项目

项目1 学生通讯录管理:文本文件增删改查(C++版本)(自顶向下设计+断点调试) (A)(V)

项目2 学生通讯录管理:文本文件增删改查(C 版本)(自顶向下设计+断点调试) (A)(V)

项目3 贪吃蛇(控制台版) (A)

四、其他

1 相关C++学习网站和参考书下载

2 留学生辅导成绩反馈

3 看看985高校的《数据结构》教材能差到什么程度

4 为什么我会感觉中国大学教材很烂?

5 中国的高校计算机教育存在哪些问题?

6 C++ 知名开源库 整理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Acwing---3777. 砖块

砖块 1.题目2.基本思想3.代码实现 1.题目 n 个砖块排成一排,从左到右编号依次为 1∼n。 每个砖块要么是黑色的,要么是白色的。 现在你可以进行以下操作若干次(可以是 0 次): 选择两个相邻的砖块,反转它…

STL——stack

目录 stack stack都有哪些接口 模拟实现一个stack stack 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器适配器即…

数据分析-Pandas数据的画图设置

数据分析-Pandas数据的画图设置 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&#x…

春招!启动了

大家好,我是洋子。今年的春招很多企业已经开始招聘了,像美团今年继续发力,24届春招以及25届暑期转正实习一共招聘4000人。另外,阿里,京东,顺丰等公司也已经开始春招,可以说招聘的号角已经正式吹…

GO语言学习笔记(与Java的比较学习)(十)

错误处理与测试 Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。但是有一套 defer-panic-and-recover 机制 错误处理 Go 有一个预先定义的 error 接口类型 type error interface {Error() string } errors 包中有一个 errorString 结构…

十二、类与声明

类与声明 什么是类? 前情总结 前面22讲的课基本上就做了两件事 学习C#的基本元素学习类的成员 析构函数: 当对象不再被引用的时候,就会被垃圾回收器gc,回收。而收回的过程当中,如果需要做什么事情,就放在…

远程调用--Http Interface

远程调用--Http Interface 前言1、导入依赖2、定义接口3 创建代理&测试4、创建成配置变量 前言 这个功能是spring boot6提供的新功能,spring允许我们通过自定义接口的方式,给任意位置发送http请求,实现远程调用,可以用来简化…

已解决org.springframework.dao.DataRetrievalFailureException数据检索失败异常的正确解决方法,亲测有效!!!

已解决org.springframework.dao.DataRetrievalFailureException数据检索失败异常的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 总结 在使用Spring Framework进行数据库操作时&…

关于硅金属电阻器?

EAK金属硅电阻器类似于陶瓷复合电阻器,在脉冲负载方面具有优势,需要高峰值功率或高电压与低电感(如预充电电路)的组合。硅金属电阻器具有更高的连续额定温度,为 350C,而陶瓷电阻器为 250C。这种扩展的温度范…

[蓝桥杯 2023 省 B] 冶炼金属

P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 参考题解: #C3150——蓝桥杯2023年第十四届省赛真题-冶炼金属(分块)-Dotcpp编程社区 https://www.bilibili.com/video/BV1wc411x7KU/?spm_id_from333.1007.top_right_bar_windo…

RT-Thread操作系统 串口DMA接收时数据被拆分多包

一、问题现象 在使用RT Thread操作系统,串口DMA接收数据时,通过log打印发现,例如GPS NEMA数据一包数据量较大或者时,接收到的数据被拆分多包处理; 二、问题解决方案 修改DMA驱动程序 在drivers/drv_usart.c中屏蔽如…

板子合集1.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/JK01WYX/ 文章目录 1.快速幂板子2.gcd得最大公约数3.堆优化的dijkstra板子4.线段树1板子 区间加线段…

中缀表达式转换逆波兰式(后缀表达式)

算法思路来自于王道的数据结构 #include <iostream> #include <stack> #include <map>using namespace std; string eq; stack<char> op; string rst ""; map<char, int> dict;// 获取优先级 int getPrio(char op) {if (op )return …

【Dubbo专栏 01 】深入探索:dubbo的架构是什么?

文章目录 Dubbo&#xff1a;深入解析分布式服务框架的核心概念与实现01 Dubbo简介02 Dubbo核心概念2.1 服务提供者&#xff08;Provider&#xff09;2.2 服务消费者&#xff08;Consumer&#xff09;2.3 注册中心&#xff08;Registry&#xff09;2.4 负载均衡&#xff08;Load…

如何对用OpenCV开发的API进行测试 (Google Test 版本)

如何对用OpenCV开发的API进行测试 &#xff08;Google Test 版本&#xff09; 如何对用OpenCV开发的API进行测试断言介绍断言基础的断言数值比较字符串比较 如何对用OpenCV开发的API进行测试 假设你想测试一个使用OpenCV开发的图像处理API&#xff0c;例如一个图像滤波函数。以…

SWC Runnable

runnable概念 runnable是编写应用程序行为逻辑的 SWC 的一部分。Runnable 类似于 C 中的函数,类似RTOS中的task,程序运行的实体,swc的灵魂。在 AUTOSAR 中,我们在配置期间在 SWC 中创建 Runnable,并且 在 SWC 的相应源文件中生成Runnable 或函数骨架。骨架函数的名称与我…

【硬件工程师面经整理15_低通/高通/带通滤波器】

低通/高通/带通滤波器 1.1 低通滤波器1.2 高通滤波器1.3 带通滤波器 1.1 低通滤波器 【定义】电感阻止高频信号通过而允许低频信号通过&#xff0c;电容的特性却相反。信号能够通过电感的滤波器、或者通过电容连接到地的滤波器对于低频信号的衰减要比高频信号小&#xff0c;称…

第二篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas金融数据分析

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas 在金融数据分析中的常见用途和功能介绍二、金融数据清洗和准备示例代码三、金融数据索引和选择示例代码四、金融数据时间序列分析示例代码五、金融数据可视化示例代码六、金融数…

软考高级:DNS欺骗相关知识和例题

一、AI 解析 DNS欺骗&#xff0c;又称DNS缓存投毒&#xff0c;是一种网络攻击技术。攻击者通过篡改DNS服务器的缓存数据&#xff0c;使得DNS查询的结果指向一个恶意的IP地址&#xff0c;从而引导用户访问到钓鱼网站或者恶意软件下载页面&#xff0c;对用户的信息安全造成威胁。…

后台组件-IO定义

<groupId>org.qlm</groupId><artifactId>qlm-io</artifactId><version>1.0-SNAPSHOT</version> 该组件定义了前端和后台微服务直接通讯结构以及返回值定义。 RequestInfo&#xff1a;请求结构 ResponseResult&#xff1a;非分页的返回结…