导图社区 C语言开发从入门到精通教程
C 开发从入门到精通教程,知识内容有C++的重要特质分析、基础语法、变量和常量、运算符、表达式、流程控制语句等。
编辑于2022-04-29 17:42:09C++开发从入门到精通教程
1说真的,我们还要学习C++吗
1.1 C++概述
1.2开发工具——Visual C++
1.2.1先看Visual C++的基本特点
1.2.2安装Visual C++
1.2.3Visual C++集成开发环境介绍
1.3使用Visual Studio 2010
安装Visual Studio 2010
1.4第一个C++程序
1.5技术解惑
1.5.1初学者经常不知道自己该学什么
1.5.2初学者需要知道的正确观念
2 C++的重要特质分析
2.1什么是面向对象(object-oriented)
2.1.1什么是OOP
2.1.2面向对象编程
2.2分析C++的程序结构
2.2.1从一段代码看C++程序结构
2.2.2看C++的文件组织
2.3必须遵循的编码规范
2.3.1养成良好的风格
2.3.2必须使用的注释
2.3.3代码也需要化妆
2.4输入输出基础
2.4.1标准输入与输出对象
2.4.2一个使用IO库的程序
2.5算法是程序的灵魂
2.5.1算法的慨念
2.5.2流程图表示算法
2.5.3计算机语言表示算法
2.6技术解惑
2.6.1C++是面向对象,C是面向过程,那么这个对象和过程是什么意思呢
2.6.2面向对象和面向过程的区别
2.6.3学好C++的建议
3你不一定了解的基础语法
3.1先看标识符
3.1.1C++中的保留字
3.1.2需要遵循的命名规则
3.2最基本的数据类型
3.2.1数字运算型
3.2.2逻辑运算型
3.2.3字符型和字符串
3.3标准类型库基础
3.3.1命名空间using声明
3.3.2标准库的string类
3.33 vector类型简介
3.3.4迭代器简介
3.3.5 bitset类型初步
3.4技术解惑
3.4.1 C++的标识符长度应当符合"min-length&&max-information"原则
3.4.2字符和字符串有什么区别
3.4.3C++中string类字符串和C中char*/char[]型字符串的差别
3.4.4C++字符串和C字符串的转换
3.4.5C++字符串和字符串结束标志
4你不一定了解的变量和常量
4.1先来看变量
4.1.1定义变量
4.1.2声明变量
4.2变量的作用域
4.2.1作用域和生存期
4.2.2作用域限定符
4.2.3存储类型
4.2.4 C++变量初始化
4.2.5 C++变量命名规范
4.3再来看常量
4.3.1什么是常量
4.3.2常量的分类
4.3.3常量的应用
4.4技术解惑
4.4.1 C++常量的命名需要遵循一定的规范吗
4.4.2在C++程序中,用const定义常量还是用#define
4.4.3 const是个很重要的关键字,在使用时应该注意些什么呢
4.4.4关于全局变量的初始化,C语言和C++有区别吗
4.4.5 C/C++变量在内存中的分布
4.4.6静态变量的初始化顺序
5你不一定了解的运算符
5.1先看赋值运算符
5.2再看算术运算符
5.3再看比较运算符
5.4再看逻辑运算符
5.5单独看++/--运算符
5.6再看位运算符
5.7再看求字节数运算符
5.8再看条件运算符
5.9再看逗号运算符
5.10技术解惑
5.10.1避免运算结果溢出的一个方案
5.10.2运算符重载的权衡
5.10.3运算符的优先级和结合性
5.10.4运算符重载是对已有运算符赋予多重含义
6说说表达式
6.1何谓表达式
6.1.1看天下几分——表达式的分类
6.1.2看表达式的书写方式
6.2说说类型转换
6.2.1先看隐式转换
6.2.2再看显式转换
6.3技术解惑
6.3.1 C/C++表达式的限制
6.3.2表达式的真正功能
7流程控制语句
7.1最简单的语句和语句块
7.1.1最简单的语句
7.1.2说说语句块
7.1.3最后是语句的总结
7.2最常见的顺序结构
7.3选择结构
7.3.1先看单分支结构语句
7.3.2再看双分支结构语句
7.3.3还要使用多分支结构语句
7.4循环结构详解
7.4.1 for语句循环
7.4.2 while语句
7.4.3说说do-while语句
7.5跳转语句
7.5.1何谓break语句
7.5.2何谓continue语句
7.5.3何谓goto语句
7.6技术解惑
7.6.1循环中断的问题
7.6.2分析循环语句的效率
7.6.3几种循环语句的比较
7.6.4 C++中,for循环该怎么读
7.6.5一个C++循环结构嵌套的问题
7.6.6 break语句和continue语句的区别
8学习C++的最大障碍——指针
8.1指针的基本慨念
8.2定义指针的几种方式
8.21先定义指针
8.2.2再识别指针
8.3指针的分类
8.4指针初始化
8.4.1第一步:指针地址初始化
8.4.2第二步:变量地址初始化
8.4.3第三步:new分配内存单元
8.4.4第四步:malloc函数分配内存单元
8.5指针运算
8.5.1算数运算
8.5.2关系运算
8.6指针的指针
8.7使用指针
8.7.1指针赋值
8.7.2*操作符
8.8分析指针和引用的关系
特殊指针
8.9.1先看void型指针
8.9.2再看空指针
8.10技术解惑
8.10.1指针的命名规范
8.10.2 C++中指针和引用的区别
8.10.3变量在语言中的实质
8.10.4 C++开发如何避免和解决野指针
8.10.5常量指针常量和常量引用常量
8.10.6指针常量和引用常量的对比
8.10.7常量指针和常量引用的对比
9复合类型
9.1数组基础
9.1.1先定义数组
9.1.2再看高级数组
9.1.3分析数组的完整性
9.1.4看维数不全
9.1.5看无维数
9.2动态数组
9.2.1在堆上分配空间的动态数组
9.2.2在栈上分配空间的“假动态”数组
9.3数组存储
9.31列存储
9.3.2行存储
9.4字符数组
9.4.1定义字符数组
9.4.2字符数组和字符串指针变量
9.5数组初始化
9.5.1先看定义时的初始化
9.5.2初始化赋值语句
9.6指针和数组
9.6.1指向数组的指针
9.6.2指针数组
9.7使用数组
9.7.1索引方式
9.7.2指针方式
9.8枚举
9.8.1枚举基础
9.8.2使用枚举
9.9结构体
9.9.1指向结构的指针
9 9.2使用结构体
9.10联合
9.11自定义类型
9.11.1先看typedef的作用
9.11.2再看typedef的使用
9.12技术解惑
9.12.1字符数组和字符串的区别
9.12.2字符数组和字符串可以相互转换
9.12.3静态数组的速度快于动态数组
9.12.4 Arrays与Vector的区别
9.12.5一道关于数组的面试题
9.12.6数组名不是指针
9.12.7作为一个用户自定义的类型,其所占用的内存空间是多少呢
10函数
10.1 C++函数基础
10.1.1先看定义方式
10.1.2函数分类
10.1.3函数定义实例
10.2函数的参数
10.2.1何谓形参实参
10.2.2使用数组做函数参数
10.3返回值和返回语句
10.4调用函数
10.4.1单独调用
10.4.2函数表达式
10.4.3实参调用
10.4.4参数传递
10.5函数递归
10.6指向函数的指针
10.7将函数作为参数
10.8变量的作用域和生存期
10.8.1变量作用域
10.8.2静态存储变量和动态存储变量
10.9函数main()和命令行处理
10.10技术解惑
10.10.1用typedef来定义一个函数指针类型
10.10.2 const关键字在函数中的作用
10.10.3 C++函数的内存分配机制
10.10.4主函数和子函数的关系
10.10.5函数声明和函数定义的区别
10.10.6使用全局变量的注意事项
10.10.7使用寄存器变量的注意事项
10.10.8自动变量的特点
11输入和输出
11.1 iostream对象
11.11标准的I/O接口
111.2文件I/O
11.13字符串I/O
11.2输出
11.21预定义类型输出
11.2.2自定义类型输出
11.3输入
11.3.1预定义类型输入
11.3.2自定义类型输入
11.4输入/输出格式化
11.4.1使用ios类成员函数
11.4.2使用操纵函数
11.5文件
11.5.1打开和关闭
11.5.2顺序读写
11.5.3随机读写
11.54二进制文件
11.5.5检测EOF
11.6技术解惑
11.61输入/输出时数的进制问题
11.6.2数据间隔
11.6.3内存文件映射
11.6.4 get和lput的值的差异
11.6.5使用控制符控制输出格式
12类和封装
12.1类
12.1.1先声明类
12.12再看类的属性
12.1.3再看类的方法
12.1.4再看构造函数
12.1.5再看析构函数
12.1.6再看静态成员
12.1.7友元
12.1.8再看修饰符
12.1.9指向类成员的指针
12.1.10嵌套类
12.1.11类文件的组织
12.2对象
12.2.1先定义对象
12.2.2再使用对象
12.2.3再看this指针
12.3技术解惑
12.31浅拷贝和深拷贝
12.3.2构造函数的错误认识和正确认识
12.33保护性析构函数的作用
13命名空间和作用域
13.1命名空间介绍
13.2定义命名空间
13.3使用命名空间
13.3.1使用域限定符
13.3.2使用using指令
13.3.3 using声明
13.3.4别名
13.4作用域
13.4.1什么是作用域
13.4.2作用域的分类
13.5技术解惑
13.5.1 using指令与using声明的比较
13.5.2为什么需要命名空间
13.5.3命名空间的作用
13.5.4在C++中使用这些头文件的方法
14类的继承和派生
14.1继承与派生的基本慨念
14.2 C++继承机制
14.3继承和派生的基本知识
14.3.1单重继承、多重继承与继承链
14.3.2公有派生和私有派生
14.33保护成员与保护派生
14.3.4友元类和友元函数
14.4派生一个类
14.4.1先看基类的使用状况
14.4.2派生的使用状况
14.4.3再看构造函数
14.4.4再看析构函数
14.4.5使用同名方法
14 4.6使用同名属性
14.5单重继承和多重继承
14.5.1单重继承
14.5.2多重继承
14.5.3构造函数和析构函数
14.6虚继承和虚基类
14.7技术解惑
14.7.1通过虔继承解决二义性问题
14.7.2使用C++虚基类的注意事项
14.7.3个问题
14.7.4多重继承的二义性
14.7.5允许派生类中的成员名和基类中的成员名相同
15多态性详解
15.1基本概念
15.2先看宏多态
15.3虚函数
15.3.1虚函数基础
15.3.2静态绑定和动态绑定
15.3.3纯虚函数
15.4抽象类
15.4.1什么是抽象类
15.4.2抽象类的派生
15.5运算符重载
15.5.1运算符重载基础
15.5.2重载一元运算符
15.5.3重载二元运算符
15.6函数重载
15.6.1函数重载基础
15.6.2参数类型不同的重载
15.7流的重载
15.7.1流插入重载
15.7.2流提取重载
15.8覆盖
15.81覆盖函数
15.8.2覆盖变量
15.9技术解惑
15.9.1重载、覆盖和隐藏的区别
15.9.2在重载运算符的时候要权衡实施的必要性
15.9.3为什么需要函数重载
15.9.4重载函数的调用匹配
15.9.5另一种虚方法查找方案
15.9.6两种重载方法的比较
16模板的威力
16.1基本概念
16.2类模板
16.21定义类模板
16.2.2使用类模板
16.2.3类模板的派生
16.24类模板和模板类的区别
16.3函数模板
16.3.1定义函数模板
16.3.2函数模板示例
16.3.3模板实例化
16.4模板组合
16.5技术解惑
16.5.1在函数模板中使用多个类型参数时要避免类型参数的二义性
16.5.2函数模板和模板函数的区别
16.5.3函数模板和类模板的区别
16.5.4仿函数的用处
17进一步剖析string类
17.1 string类的方法
17.2 string类的运算
17.2.1查找函数
17.2.2替换函数
17.2.3插入函数
17.2.4删除函数
17.2.5比较函数
17.2.6连接函数
17.2.7赋值函数
17.2.8特性描述函数
17.2.9构造函数
17.2.10迭代器处理
17.2.11其他几种处理函数
17.3 string类综合应用
17.3.1头文件123.h
17.3.2类实现文件yingyong.cpp
17.3.3测试使用主文件zonghe.cpp
17.4技术解惑
17.4.1 C++字符串和C字符串的转换
17.4.2大小和容量函数
17.4.3 cstring类与string类的比较
18异常处理
18.1什么是异常处理
18.2 C++的异常处理机制
18.2.1 throw抛出异常
18.2.2 raise抛出异常
18.2.3 try-catch异常捕获
18.3异常处理中的构造和析构
18.4 C++异常处理机制总结
18.5技术解惑
18.5.1编写软件的目标
18.5.2关于C++的new关键字的异常处理
18.5.3 C语言异常处理和结构化异常处理有什么区别?
18.5.4 C++抛出异常不捕获,程序的空间会释放马?
18.5.5 throw抛出异常的特点
18.5.6关于C异常处理的心得体会
18.5.7慎用catch()
18.5.8慎用继承体系里的类作为catch的参数
18.5.9对象析构函数被调用的3种场合
18.5.10不要在异常处理体系中寄希望于类型转换
18.5.11有C++异常处理体系捕获不到的东西吗?
18.5.12 set unexpected函数的用处
18.5.13不要让异常逃离析构函数
19内存管理
19.1内存分类
19.2栈内存管理
19.2.1申请栈内存
19.2.2使用栈内存
19.2.3释放栈内存
19.2.4改变内存大小
19.3堆内存管理
19.3.1申请堆内存
19.3.2使用堆内存
19.3.3释放堆内存
19.3.4改变大小
19.4技术解惑
19.4.1堆和栈的区别
19.4.2常见的内存错误及其对策
19.4.3防止发生溢出错误
20预处理
20.1什么是预处理
20.2 C++中常见的预处理
20.2.1文件包含
20.2.2条件编译
20.2.3布局控制
20.2.4宏替换
20.2.5其他预编译指令
20.3分析宏的常见陷阱
20.4技术解惑
20.4.1预处理的未来
20.4.2两者的意义
20.4.3个初学者的问题
21错误和调试
21.1什么是错误
21.1.1 Bug的由来
211.2程序设计方面的解释
21.2常见的错误分析
21.3程序调试常见错误
21.4 C++编程中的调试技巧
21.4.1调试标记
21.4.2运行期间调试标记
21.43把变量和表达式转换成字符串
21.4.4 C语言的assert()
21.5技术解惑
21.5.1编写规范易懂的代码
21.5.2编写安全可靠的代码
21.5.3 VisualC++调试技术
21.5.4常见的非语法错误
22初入江湖——图书借阅系统的实现过程
22.1项目要求
22.2需求分析
22.3系统具体实现
22.31数据结构设计
22.3.2系统主文件rent.cpp
22.33菜单处理文件mainfunction.h
22.3.4函数定义文件subfunction.h
22.3.5菜单处理实现文件mainfunction.cpp
22.3.6功能函数实现文件subfunction.cpp
23开始闯关(1)——C++实现网络应用项目
23.1项目要求
23.1.1客户机/服务器模式介绍
23.1.2客户机/服务器模式的运作流程
23.2实现原理
23.2.1什么是winsocket编程接口
23.2.2 winsocket中的函数
23.3具体实现
23.3.1客户端和服务器端的公用文件
23.3.2实现服务器端
23.3.3实现客户端
24开始闯关(2)——C++实现游戏项目
24.1计算机游戏基础
24.11游戏的基本流程
24.1.2游戏元素
24.13游戏层次
24.2项目分析
24.2.1游戏的角色
24.2.2游戏界面表现
24.3具体实现
24.31实现相关位图
24.3.2变量与函数
24.3.3实现全屏
24.3.4类初始化
24.3.5实现具体显示界面
24.3.6信息提示
24.3.7和时间段相关的操作
24.3.8键盘操作
24.3.9我方发射子弹
24.3.10敌机出现
24.311敌机发射子弹
24.3.12敌机子弹移动
24.3.13火力实现
25功成名就——DirectX实现媒体播放器
25.1 DirectX技术基础
25.1.1 DirectX技术概述
25.1.2 DirectX的基本结构及组成
25.1.3 DirectX主要组件介绍
25.2系统分析和设计
25.2.1功能需求和效果展示
25.2.2设计FilterGraph结构
25.3实现媒体控制类
25.3.1 CDXGraph类初始化
25.3.2创建Graph滤波器链表
25.3.3设计图像窗口
25.3.4媒体播放控制
25.3.5视频全屏显示
25.3.6抓图保存
25.4实现播放器主题
25.4.1打开个媒体文件
25.4.2渲染媒体文件
25.4.3播放媒体文件
25.44实现控制功能
25.4.5实现拖放功能
25.4.6实现音量调节功能
25.4.7添加背景图片
26笑傲江湖——C++网络视频监控系统
26.1系统分祈
26.2系统设计
26.3系统预览
26.4数据库设计
26.5选购监控卡
26.6具体编程实现
26.6.1设计公共模块
26.6.2设计主窗体
26.7设计管理员登录模块
26.8设计监控管埋模块
26.8.1监控管理技术分析
26.8.2缤程监控管理
26.8.3单元测试处理
26.9设计广角自动监控模块
26.9.1可行性分析
26.9.2编程实现
26.9.3单元测试
26.10设计视频回放模块
26.11分析绚丽界面的实现方法