目录

持续更新……

C++教程

首发于2020/3/14

更新开始于2021/2/6,改名以及补充,原名:C++新手基础教程,必备!必看!最全手写教程

前言

​ C++是一门古老的语言,C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。看得懂看,看不懂跳过

我会尽量讲的简单一些,在这里尽微薄之力帮助更多人在闲暇时间看一看学学C++的知识。

​ C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

  • 中文名:C++语言

  • 外文名:The C++ Programming Language/c plus plus

  • 类 别:计算机程序设计语言

  • 创始人:Bjarne Stroustrup

  • 创始公司:贝尔实验室

  • 基本内容:类、封装、重载、继承、模版

​ 世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言。之后出现了多种计算机高级语言。1970年,AT&T的Bell实验室的D.Ritchie和K.Thompson共同发明了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,它实际上是UNIX的“副产品”。它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植。

视频教程

BTW:如果想入门C++,可以点下面这个网站看视频教程,我当初就是跟他们的老师入门的。

http://www.csai.online/course/explore/B02

文字教程

推荐两个比较好的教程网站

w3cschool:https://www.w3cschool.cn/cpp/

runoob菜鸟教程:https://www.runoob.com/cplusplus/cpp-intro.html

集成开发环境(IDE)

​ 编写程序需要工具,代码需要有不同的颜色,叫代码高亮,大体有两种工具——文本编辑器和IDE,文本编辑器就是只提供代码高亮,工具较少,所以下载大小比较小。通常有Notepad++、EMACS、Vim、sublime Text2和Xcode等。但是IDE的功能就全面了,对于开发人员来说,IDE对于开发的帮助是巨大的。

Visual Studio (Visual C++)

C++ Builder

kDevelop

Anjuta

Code::Blocks——开放源码的全功能的跨平台C/C++集成开发环境 。

Visual Mingw

Ideone

Eclipse CDT

Compilr

Code Lite

Netbeans C++

上面就是一个个IDE,我最常用的是Visual Studio。

编译器

​ 编译器是为了让计算机读懂代码的工具,必须下载。

Dev C++

Ultimate++

Digital Mars

C-Free

MinGW

Tiny C Compiler

工作原理

​ C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。

学习指南

入门书籍

《C++程序设计教程》,钱能

《易学C++》,潘嘉杰

《大话设计模式》,程杰

《C++编程规范:101条规则、准则与最佳实践》,刘基诚

《C和C++程序员面试秘籍》,董山海

进阶书籍

《C++程序设计语言》英文第四版,Bjarne Stroustrup

《C++ Primer 第5版(英文版)》,Stanley Lippman、Josee Laoie、Barbara Moo

《C++标准库:自学教程与参考手册(第2版)(英文版)》,Nicolai Josuttis

《C++ Concurrency in Action|C++ 并发实战》,Anthony Wiliams

《C和C++安全编码(第2版)(英文版)》,Robert Seacord

《C++ Primer Plus》

算法、竞赛书籍

《数据结构与算法分析,C语言描述》[美]马克·艾伦·维斯 著

《数据结构(C语言版)》 清华大学出版社

《算法竞赛 入门到进阶》 清华大学出版社

教程

标准构建

#include <iostream>
using namespace std;
int main(){
return 0;
}

上面的程序是一个标准的c++程序,什么都不干。

程序解释

​ 第一句:#include <iostream>是一个预处理语句,在#include后面可以调用c++标准库,基础的c++程序定义一个iostream是标准输入输出流,第二行using namespace std;可以先不用管,只要记住就行。后面的int main()是定义一个函数,int是返回值类型,main() 是函数名,以后将自定义函数的时候会仔细讲,main()主函数,不可以改名!后面的{}一对大括号括起来的地方就是你写代码的地方了。return 0;是代表程序结束的地方,叫返回值,返回值的默认值是0,不可以改!

第一个C++程序——“hello world”

​ 我们弄明白了标准构建就可以写带有功能的代码了,这种代码叫做源代码。任何语言的第一步都是输出“hello world”,C++也一样,让我们开始吧?!

写代码前先得有一个IDE或者文本编辑器
新手我建议使用Dev-Cpp,因为Dev-Cpp有自带编译器,不用下载编译器了,

#include <iostream>
using namespace std;
int main() {
cout << "hello world" << endl;
return 0;
}

把这段代码写下来

编译

​ 编译是什么?是把你写出的代码转化成电脑可以读懂的代码。首先会转成汇编,再转成机器码,计算机就明白了。
怎么编译?(用Dev-Cpp)

这是你的代码对不对?

​ 然后按上图的灰色片可以新建源代码,黄色的是保存,保存你的代码到你想保存的位置,往右看看到一个四格格的图标,是编译,点击会弹出一个框,如下图,等它停下来就编译完成,点击编译左边的另一个灰色片片,点击就运行了,如果想简单点,直接点击运行右边的编译运行,就一体化了。

运行后弹出一个黑色的框,输出“hello world”,成功!


​ 这个代码只有一个新的地方cout << “hello world" << endl;,我们分析一下,cout是什么意思?cout是输出到控制台(终端),<<是输出流符号,""这是代表字符串,输出一个hello world的字符串,最后endl是回车的意思,输出换行,最后分号;每行都要有;

C++基础语法

输入与输出

尽管C和C++已经很相似了,不过还是有略微差别……

C++风格

c++的输入与输出相对简单,但是有些功能会缺失,所以c++中也支持C语言的输入与输出

实例:

#include <iostream>
using namespace std;
int main(){
int aNum;
cin >> aNum;
cout << "aNum:" << aNum << endl;
return 0;
}

​ 程序第一行的#include <iostream>大家都还记得吧?这个iostream就是为了cin和cout,当然还有其他功能,都是相对高级,所以这里不说

C++入门教程:大白话讲解,新手基础篇⭐⭐⭐(附源码及详解、视频课程资料推荐)的更多相关文章

  1. linux 基础入门(8) 软件安装 rpm、yum与源码安装详解

    8.软件 RPM包安装 8.1rpm安装 rpm[选项]软件包名称 主选项 -i 安装 -e卸载 -U升级 -q查找 辅助选项 -ⅴ显示过程 -h --hash 查询 -a-all查询所有安装的包 - ...

  2. openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  3. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  4. leaflet-webpack 入门开发系列四图层控件样式优化篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  5. 【Cocos2d入门教程二】Cocos2d-x基础篇

    上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: a.环境设定(帧率 初始化ope ...

  6. mui初级入门教程(三)— html5+ XMLHttpRequest 与mui ajax用法详解

    文章来源:小青年原创发布时间:2016-05-29关键词:mui,html5+,XMLHttpRequest,ajax,懒加载转载需标注本文原始地址: http://zhaomenghuan.gith ...

  7. SpringCloud基础篇AOP之拦截优先级详解

    前面两篇分别介绍了AOP的基本使用姿势和一些高级特性,当时还遗留了一个问题没有说明,即不同的advice,拦截同一个目标方法时,优先级是怎样的,本篇博文将进行详细分析 同一个切面中,不同类型的advi ...

  8. ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目

    前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...

  9. openlayers4 入门开发系列结合 echarts4 实现统计图(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

随机推荐

  1. ACM-古老的密码(排序qsort)

    古老的密码 题目描述:给定两个长度一样且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,之后对26个字母做一个一一映射,使得两个字符串相同例如,JWPUDJSTVP重排后可以得到WJD ...

  2. HTTPS优化与证书

    1.HTTPS性能优化 1.1 HTTPS性能损耗原因 前文讨论了HTTPS原理与优势:身份验证.信息加密与完整性校验等,且未对TCP和HTTP协议做任何修改.但通过增加新协议以实现更安全的通信必然需 ...

  3. MySQL复合索引探究

    复合索引(又称为联合索引),是在多个列上创建的索引.创建复合索引最重要的是列顺序的选择,这关系到索引能否使用上,或者影响多少个谓词条件能使用上索引.复合索引的使用遵循最左匹配原则,只有索引左边的列匹配 ...

  4. B - B(Is It A Tree?)

    给出一堆边给你,让你判断这是不是一棵树.边的信息以(start , end)的形式给出. A tree is a well-known data structure that is either em ...

  5. 2020 CCPC-Wannafly Winter Camp Day2

    2020 CCPC-Wannafly Winter Camp Day2 A 托米的字符串 虽然每个子串出现的概率是相同的,但是同一长度的子串个数是不同的,所以要分别处理.计算出某一长度的情况下,元音字 ...

  6. 【洛谷 p3373】模板-线段树 2(数据结构--线段树)

    题意:已知一个数列,你需要进行下面三种操作:1.将某区间每一个数加上x:2.将某区间每一个数乘上x:3.求出某区间每一个数的和. 解法:(唉 :-(,这题卡住我了......)对于加法和乘法的混合操作 ...

  7. Java 窗口 绘制图形 #2

    写在前面: 高考结束咧,爽到啊,好耶 完善了Java 窗口 绘制图形 #1里面的程序 加入了缩放平移功能,给代码加了注释 1 package my_package; 2 3 import java.a ...

  8. 牛客53680 「金」点石成金 (dfs)

    题意:给你\(n\)组数,每组4个正整数\(a,b,c,d\),每组数有两个选择: ​ 1.增加\(a\)个财富,消耗\(b\)点魔法. ​ 2.回复\(c\)点魔法,减少\(a\)个财富. 求最后财 ...

  9. python try异常处理

    什么是异常 python异常捕获,在刚开始学的时候,经常会遇到两种报错信息:语法错误和执行的异常. 语法错误在执行的时候就会报错,同时控制端会告诉你错误所在的行: 但即便python程序语法是正确的, ...

  10. 国产网络损伤仪SandStorm -- 如何连接设备

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...