【C++】C++入门实战教程(打造属于自己的C++知识库)

news2024/9/21 10:50:34

目录

目录

写在前面

1.C++学习路线

2.本教程框架介绍

一.C++基础部分

1.程序编码规范

2.程序运行与编译

3.关键字

4.常用数据类型

5.运算符相关

二.C++进阶部分

1.面向对象编程

2.函数编程

3.模板编程

4.多线程与并发

5.STL介绍及使用

6.内存模型与优化

三.C++实战部分


写在前面

1.C++学习路线

    关于C++的学习路线,学习C++是一个系统性的过程,涉及语言基础、标准库、面向对象编程、高级特性等多个方面。以下是一个推荐的C++学习路线:

1. 基础入门

  • 了解C++:学习C++的历史、特点和应用领域。
  • 开发环境搭建:安装编译器(如GCC或Visual Studio),配置开发环境。
  • 基础语法:学习变量、数据类型、运算符、控制结构(if、switch、loops)。

2. 函数和控制结构

  • 函数:了解函数的定义、声明、参数传递和返回值。
  • 作用域和生命周期:理解局部变量和全局变量的作用域。
  • 递归:学习递归函数的概念和使用。

3. 数据结构

  • 数组和字符串:学习数组的声明、初始化和遍历,以及C++中的字符串处理。
  • 指针和引用:理解指针的基本概念,包括指针的声明、解引用和地址运算。

4. 面向对象编程

  • 类和对象:学习如何定义类,以及类的属性和方法。
  • 封装:理解封装的概念,如何使用访问修饰符(public、private、protected)。
  • 构造函数和析构函数:学习对象的生命周期管理。

5. 高级特性

  • 继承:学习如何使用基类和派生类,以及多态的概念。
  • 多态和虚函数:理解虚函数和纯虚函数,以及如何实现多态。
  • 运算符重载:学习如何重载运算符以实现自定义行为。

6. 标准模板库(STL)

  • 容器:学习常用的容器类,如vector、list、map、set等。
  • 迭代器:理解迭代器的使用方法。
  • 算法:熟悉STL提供的算法,如排序、搜索等。

7. 输入/输出和文件操作

  • 输入输出流:学习使用cin和cout进行输入输出操作。
  • 文件操作:学习如何读写文件。

8. 异常处理

  • 异常机制:学习try、catch和throw的使用。

9. 进阶知识

  • 模板编程:学习函数模板和类模板。
  • 智能指针:了解自动内存管理,如shared_ptr、unique_ptr。
  • C++11及更高版本的新特性:学习现代C++的特性,如lambda表达式、auto类型推导、基于范围的for循环等。

10. 实践项目

  • 小项目实践:通过实际编写小程序来巩固所学知识。
  • 开源项目参与:参与开源项目,提高实际编程能力。

11. 持续学习

  • 阅读优秀的C++代码:学习优秀的代码风格和设计模式。
  • 关注C++社区:参与C++相关的论坛和社区,了解最新的C++技术和趋势。

学习资源推荐:

  • 书籍:《C++ Primer》、《Effective C++》系列、《The C++ Programming Language》等。
  • 在线课程:Coursera、edX、Udemy等平台上的C++课程。
  • 官方文档:C++标准文档和编译器文档。
  • 社区和论坛:Stack Overflow、C++ subreddit等。

记住,学习编程是一个不断实践和积累经验的过程,不断编写代码、解决问题,并从错误中学习是提高技能的关键。


2.本教程框架介绍

  本文是关于C++的入门学习教程,主要是以解决问题的角度综合在实战中的经验进行归纳整理,每一个问题会有单独的文章展开详细介绍,通过以下逻辑顺序思路来达到深入浅出的效果,例如这篇文章:

【C++】枚举enum使用详解icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/127567837

上面链接文章的目录截图如下:

1.What:先介绍这个问题是什么?往往一个问题的答案当你能够准确的描述出他的本质时,问题已经解决了90%以上;

2.When and Where:什么时候使用?也就是使用的场景,往往学过一些功能之后就很快忘记,很重要的原因是没有学以致用,当你知道了什么场景使用该功能时,你之后再碰到这种场景,你的记忆就会产生关联,帮助你想起来这时候应该用某某功能更好;

3.How:怎么使用它?这就是具体介绍该功能的具体使用方法,其实我觉得除去一些常用的方法之外,不需要强行记忆那么多使用方法,一般都是遇到了以后再去通过自己的记忆检索,尝试或者查询即可;

我特别喜欢一句话,送给大家共勉:

大脑是用来处理问题的,不是用来记忆的。

    打造属于自己的“第二大脑”系统用来存储知识,如果把知识库比作一个图书馆,那么每一本图书的编号就是它的指针,让你的第一大脑存储“指针”,而不是直接存储“厚重的书籍”,所以感兴趣的小伙伴可以关注收藏一下,一起持续学习更新,共同打造属于自己的“C++知识库”!


一.C++基础部分

    这里我想说的C++基础语法,这部分内容无论是看书或者看视频,我觉得如果有其他语言基础,那么可以迅速的过一遍,不用做太多练习,了解语法格式就行;如果没有其他语言基础,那么就可以跟着视频或者书本多敲敲小练习代码,帮助你熟悉和建立起对编译器、IDE和语言格式有个更好的了解。

基础部分有以下主要内容(包括但不限于):

  • 第一个Hello World程序;(把环境配置好,让程序能跑起来)
  • 单行注释和多行注释的使用;(为了在入门学习方便做批注和笔记)
  • 变量和常量的使用;(注意二者的区别)
  • 关键字;(熟悉常用的关键字)
  • 常用数据类型;(int、char、float、double、string、bool等)
  • 算术运算符和逻辑运算符(+ = * /和! || &&)
  • 程序运算流程(if...else、for、switch、while、dowhile、break、contiune等)

以下是有关C++基础的一些文章及案例:

1.程序编码规范

【C++基础】C语言和C++的区别

摘要:面向过程 vs 面向对象、类和对象、继承、多态、模板、异常处理、标准库、内存管理、命名空间、运算符重载、构造函数和析构函数、编译器和链接器

【C++基础】C++命名规则标准实例

摘要:类名、函数名、参数、变量、常量、静态变量、全局变量、类的成员变量等

2.程序运行与编译

​【C++基础】main函数及返回值深度解析

摘要:介绍main函数的执行顺序、参数、返回值等

【C++基础】GCC和Visual Studio编译器与C++标准对应关系

摘要:gcc、vs版本和c++对照表等

【C++基础】C++中的new关键字用法详解

摘要:new是什么、new的使用方法、new的使用场景等

【C++基础】 C++中的预处理器介绍

摘要:宏定义、宏展开、条件编译等

【C++基础】C++中的#pragma oncn用法解析

摘要:#pragma once介绍及使用场景、包含守卫(include guards)

【C++基础】C++中include头文件中双引号和尖括号的区别

摘要:include头文件中双引号和尖括号的区别

3.关键字

【C++基础】C++中的关键字static详解

摘要:static静态成员与全局变量等

【C++基础】C++中的explicit关键字详解

摘要:explicit关键字介绍、作用及使用方法等

【C++基础】C++中的#define、typedef、const关键字区别

摘要:#define、typedef和const区别

【C++基础】C++中tpyedef和using的区别

摘要:tpyedef和using的区别

【C++基础】C++中的extern用法

摘要: extern关键字用法

4.常用数据类型

【C++基础】C++中的枚举enum类型使用详解

摘要:什么是枚举、如何使用枚举、何时使用枚举等

【C++基础】 C++中Struct结构体用法详解

摘要:C语言Strcut基本用法、C++中Strcut基本用法、typedef 定义结构体等

【C++基础】C++中struct结构体和class类的区别

摘要:struct结构体和class类的区别等

5.运算符相关

​【C++基础】C++中的三目运算符

摘要:三目运算符介绍、三目运算符的赋值、三目运算符的应用等


二.C++进阶部分

  进阶部分的内容我会以what is it、when and where、how to use这样的逻辑顺序按模块进行梳理,每一个模块对应有一个链接专门的文章来详细介绍,这里只保留所有模块的大纲目录(也就是这些模块的“指针”),方便大家查找检索学习。


以下是有关C++进阶的一些文章及案例:

1.面向对象编程

【C++进阶】C++构造函数的初始化列表

摘要:构造函数初始化列表的方式、顺序等

【C++进阶】C++中的委托构造函数详解

摘要:委托构造函数概念、作用、用法及注意事项等

2.函数编程

【C++进阶】C++中的值传递,引用传递,指针传递之间的区别

摘要:值传递,引用传递,指针传递之间的区别等

【C++基础】C++中内联函数详解

摘要:inline关键字为什么使用内联函数、内联与宏等

【C++进阶】C++中的友元函数详解

摘要:友元函数介绍、使用及注意事项等

3.模板编程

【C++进阶】C++函数模板介绍及使用案例

摘要:函数模板的作用、函数模板与函数重载、普通函数与函数模板的区别等

4.多线程与并发

【C++进阶】 C++并行与并发概念

摘要:何谓并发、并行与并发概念、如何使用并发等

【C++进阶】多线程数据共享问题、互斥量、死锁及解决方法

摘要:多线程数据共享问题、互斥量、死锁及解决方法等

【C++进阶】并发与多线程condition_variable、wait、notify_one

摘要:std::condition_variable、std::condition_variable::wait()、notify_one、notify_all等

5.STL介绍及使用

【C++进阶】C++11之vector容器详解

摘要:vector初始化、向vector对象中添加元素、遍历vector的方法等

6.内存模型与优化

【C++进阶】C++中的内存模型

摘要:内存分区栈区、堆区、new/delete操作符等


三.C++实战部分

【C++实战】C++中的sync_with_stdio(false)介绍

摘要:sync_with_stdio(false)是一种提升cin、cout效率的手段等

【C++实战】C++中深拷贝与浅拷贝详解

摘要:深拷贝与浅拷贝的内容及区别等

【C++实战】C++中SDKDDKVer.h和WinSDKVer.h函数库详解

摘要:SDKDDKVer.h和WinSDKVer.h函数库详解及区别等

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

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

相关文章

【vue教程】一. 环境搭建与代码规范配置

目录 引言Vue 框架概述起源与设计理念核心特性优势 Vue 开发环境搭建环境要求安装 Vue CLI创建 Vue 项目项目结构介绍运行与构建 组件实例基础模板响应式更新 代码规范为什么要使用代码规范在 Vue 项目中使用 ESLint 、PrettierESLint配置 ESLintrules 自定义错误级别 Prettier…

【Linux杂货铺】3.程序地址空间

1.程序地址空间的引入 fork(&#xff09;函数在调用的时候子如果是子进程则返回0&#xff0c;如果是父进程则返回子进程的pid&#xff0c;在代码中我们分别在子进程和父进程读取全局变量g_val的时候居然出现了俩个不同的值。如下&#xff1a; #include<stdio.h> #includ…

【Linux信号】阻塞信号、信号在内核中的表示、信号集操作函数、sigprocmask、sigpending

我们先来了解一下关于信号的一些常见概念&#xff1a; 实际执行 信号的处理动作 称为信号递达。 信号从产生到递达的之间的状态称为信号未决。 进程可以选择阻塞(Block)某个信号。 被阻塞的信号产生时是处于未决状态的&#xff0c;知道进程解除对该信号的阻塞&#xff0c;该…

01. 课程简介

1. 课程简介 本课程的核心内容可以分为三个部分&#xff0c;分别是需要理解记忆的计算机底层基础&#xff0c;后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理&#xff0c;后两者在面试中出现的频…

FGF14:脑部疾病新潜力靶标

成纤维细胞生长因子14&#xff08;FGF14&#xff09;是FGF11亚家族成员&#xff0c;在神经元的所有基本特性&#xff08;内在放电、兴奋性和抑制性神经元的突触传递和可塑性&#xff09;中发挥作用。 &#xff08;数据来源AlphaFold&#xff09; FGF14由247个氨基酸组成&#x…

一键运行 ComfyUI SD3!大规模医学 VQA 评测数据集上线,涉及超 20 个人体器官和部位

为了进一步推进 AI4S 的普适化&#xff0c;HyperAI超神经策划了「Meet AI4S」系列直播栏目。第一期直播将于 7 月 17 日 19:00 准时上线&#xff01; 我们邀请到了浙江大学遥感与地理信息系统博士生丁佳乐&#xff0c;他的分享主题为「神经网络为房价的空间异质性提供新解释」&…

c# 容器变换

List<Tuple<int, double, bool>> 变为List<Tuple<int, bool>>集合 如果您有一个List<Tuple<int, double, bool>>并且您想要将其转换为一个List<Tuple<int, bool>>集合&#xff0c;忽略double值&#xff0c;您可以使用LINQ的S…

Python函数 之 变量

1.引用【了解】 定义变量的时候, 变量和数据 都会在内存开辟空间 变量所对应的内存空间中存储的是 数据所在内存的地址 (平时理解为 将数据存储到变量中即可) 变量中保存数据的地址,就称为是引用 Python 中所有数据的传递,传递的都是引用(即地址) 赋值运算符(), 会改变变量的引…

全面升级的对象创建——抽象工厂模式(Python实现和JAVA实现)

1. 引言 大家好&#xff01;在之前的文章中&#xff0c;我们探讨了简单工厂和工厂方法模式&#xff1a; 轻松创建对象——简单工厂模式&#xff08;Python实现&#xff09; 轻松创建对象——简单工厂模式&#xff08;Java实现&#xff09; 灵活多变的对象创建——工厂方法模式…

鸿蒙瀑布流和欢迎页(1)

1.瀑布流 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-waterflow.md他有官网文档&#xff0c;有个瀑布流的案例 自定义一类实现官方瀑布流接口 // WaterFlowDataSource.ets// 实现IDataSource接口的…

开发技术-Java BigDecimal 精度丢失问题

文章目录 1. 背景2. 方法3. 总结 1. 背景 昨天和小伙伴排查一个问题时&#xff0c;发现一个 BigDecimal 精度丢失的问题&#xff0c;即 double a 1.1;BigDecimal ba new BigDecimal(a).subtract(new BigDecimal(0.1));System.out.println(ba);输出&#xff1a; 1.000000000…

做数据线的绿联,怎么做NAS就不灵了?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 姝琦 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 绿联的NAS设备最近频频出问题&#xff0c;从升级系统需要擦除数据&#xff0c;到最近的SSL私钥泄露事件&…

【新书速递】使用MATLAB进行雷达系统分析和设计(第四版)(2022)

来源&#xff1a;公众号高山防务 一、目录 目录 1雷达定义和术语 1.1雷达系统分类和波段 1.1.1高频&#xff08;HF&#xff09;和甚高频&#xff08;VHF&#xff09;雷达&#xff08;A和B波段&#xff09; 1.1.2超高频&#xff08;UHF&#xff09;雷达&#xff08;C波段&am…

如祺出行破发,萝卜快跑走红:网约车平台何去何从?

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 Robotaxi第一股真的来了&#xff1f; 这两天自动驾驶圈儿热度不断&#xff0c;先是萝卜快跑热搜停不下来&#xff0c;然后广汽旗下网约车平台如祺出行就在港股成功上市。 招股书里&#xff0c;如祺出行自己定义自己是一家“…

机器学习——关于极大似然估计法的一些个人思考(通俗易懂极简版)

最近在回顾机器学习的一些相关理论知识&#xff0c;回顾到极大似然法时&#xff0c;对于极大似然法中的一些公式有些迷糊了&#xff0c;所以本文主要想记录并分享一下个人关于极大似然估计法的一些思考&#xff0c;如果有误&#xff0c;请见谅&#xff0c;欢迎一起前来探讨。当…

昇思25天学习打卡营第9天|MindSpore静态图加速

打卡 目录 打卡 AI编译框架运行模式 动态图模式PyNative 手动控制动态图运行示例-全局context 静态图模式Graph 手动控制静态图运行示例-全局context ​编辑 jit 装饰器加速图编译-例 jit函数变换方式加速图编译-例 jit 加速某个部分的神经网络模块-例 静态图的语法…

基因组、染色体和基因水平上可视化拷贝数变异(CNVs)

1.CNVmap简介 CNVmap是一种用于在基因组、染色体和基因水平上可视化拷贝数变异&#xff08;CNVs&#xff09;的工具。CNVkit和CNVpytor是一种检测全基因组拷贝数变异和变异的软件&#xff0c; 该工具的输入是从CNVkit / CNVpytor工具获得的**.cns和.cnr文件格式**。可用于CNV-…

云动态摘要 2024-07-12

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造,可通过对话方式生成可视化…

基于stm32+小程序开发智能家居门禁系统-硬件-软件实现

视频演示&#xff1a; 基于stm32智能家居门禁系统小程序开发项目 视频还有添加删除卡号&#xff0c;添加删除指纹&#xff0c;关闭继电器电源等没有演示。 代码Git&#xff1a; https://github.com/Abear6666/stm32lock 总体功能&#xff1a; 本门禁系统主要解锁功能分别为卡…

Argo CD入门、实战指南

1. Argo CD概述 1.1 什么是 Argo CD Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。 1.2 为什么选择 Argo CD 应用程序定义、配置和环境应具有声明性并受版本控制。应用程序部署和生命周期管理应自动化、可审计且易于理解。 2. Argo CD基础知识 在有效使用 Ar…