目录
目录
写在前面
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使用详解https://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函数库详解及区别等