1. 基础概念

1.1 编程语言

旨在让人更容易得使用计算资源,充分利用电脑,不用人做一些重复劳动或持续参与。

1.2 可执行文件

是可运行的成品,应按程序员希望的那样做。

1.3 生成可执行文件的步骤(构建可执行文件)

编辑/输入:使用文本编辑器/IDE编写C++代码,文件名必须以.cpp结尾。
编译:使用C++编译器对代码进行编译,将代码转换为包含在目标文件中的字节码/机器语言版本,一次处理一个代码文件,生成.o或.obj文件,并忽略这个cpp文件对其他文件中代码的依赖
链接:使用链接器链接编译器的输出,生成一个可执行文件(如Windows中的.exe文件),如果链接成功,则生成一个可执行文件供程序员执行和分发。

1.4 IDE

集成开发环境(Integrated Development Environment)。让您能够在一个统一的用户界面中完成编辑/输入、编译、链接、调试和运行步骤。
Windows下最流行的是Visual Studio,或使用VS Code配置及Mingw等编译器。
Linux下最流行的是GNU C++编译器g++及Eclipse。

2. 特点

2.1 是一种面向对象的编程语言

支持类,实现了封装、继承、抽象和多态等概念。
类包含成员数据以及操作成员数据的成员方法。其结果是程序员需要考虑数据以及要用它们来做什么。
也有人说只能算是基于对象,因为有多继承。

2.2 是一种中级编程语言

这意味着使用它既可以高级编程方式编写应用程序,又可以低级编程方式编写与硬件紧密协作的库
与.NET、Java等有内存垃圾回收机制的高级语言相比,C++可以让开发人员控制应用程序的资源使用和可用性,以及性能

2.3 一直以来,很多C++编辑器都支持C语言

3. C++标准

3.1 意义

不像.NET和Java有自身的中间运行环境和主流的跨平台编译器,C++被众多平台接受和采纳,这些平台使用了不同的编译器来编译成不同平台的机器语言/版本,为了避免这些不同编译器之前的差异导致的互操作性和移植方面的问题,ISO标准委员会批准了C++标准。
如果要编写Windows和Linux都可以运行的程序,最好在编程时遵循标准,避免针对环境进行编程。

3.2 发展历程

  1. C++98、C++03:比较老
  2. C++11:一些重大改进,比如:
    1. 引入了auto关键字自动推断变量类型;
    2. Lambda函数式没有名称的函数,让您能够编写紧凑的函数对象,而无需提供冗长的类定义,从而极大地减少了代码。
    3. 能够编写可移植的多线程C++应用程序,同时确保它们遵守标准。这些应用程序支持并行执行范式,在用户升级到多核CPU以改善硬件配置时,其性能将相应地提升。
  3. C++14:增量式改进,进行完善
  4. C++17

3.3 注意

并非所有流行的编译器都会迅速而全面地支持最新标准,所以这些新增功能并非不可少的,并需要评估。

4. 其他

  • 语句必须以;结尾,不像python那样可以以换行结尾。
  • 编译器直接生成使用机器语言的目标文件;解释型语言依赖于解释器,其在微处理器和代码之间充当翻译,因此性能通常会受到影响。
  • 警告不同于错误,不应系那个编译,只是可能有更好的编写方式;语法错误会禁止程序员生成可执行文件;运行时错误。
  • C++区分大小写

21天学通C++学习笔记(一):入门的更多相关文章

  1. 21天学通C++学习笔记(九):类和对象

    1. 类和对象 现实中的人等事物往往具备一些特征并且可以做某些事情,要在程序中模拟这些事物,需要一个结构,将定义其属性(数据)以及其可用这些属性执行的操作(函数)整合在一起.这种结构就是类,而这种结构 ...

  2. 21天学通C++学习笔记(八):指针和引用

    1. 简述 C++最大的优点之一是,既可以用它来编写不依赖于机器(主要是内存)的高级应用程序,又可以用它来编写与硬件紧密协作的应用程序. 事实上C++让您能够在字节和比特级调整应用程序的性能,而要编写 ...

  3. 21天学通C++学习笔记(七):函数

    1. 为什么需要函数 可将应用程序的内容划分成依次调用的逻辑块,让您能够划分和组织程序的执行逻辑,有助于提高可重用性. 2. 基本概念 是子程序,可接受参数,可有返回值. 要让函数执行其任务,必须调用 ...

  4. 21天学通C++学习笔记(四):数组和字符串

    1. 数组 概念 是一组元素 这些元素是相同的数据类型 按顺序存储到内存中 目的是避免在业务需要时去重复声明很多同类型的变量 初始化 分别初始化:int i [5] = {1,2,3,4,5}; 全部 ...

  5. 21天学通C++学习笔记(二):C++程序的组成部分

    1. 预处理器编译指令 预处理器是一个在编译前运行的工具. 预处理器编译指令是向预处理器发出的命令,总是以磅字符#大头. #include让预处理器获取指定文件并将它们放在编译指令所处的位置.#inc ...

  6. 21天学通C++学习笔记(三):变量和常量

    1. 简述 内存是一种临时存储器,也被称为随机存取存储器(RAM),所有的计算机.智能手机及其他可编程设备都包含微处理器和一定数量的内存,用地址来定位不同的存储区域,像编号一样. 硬盘可以永久的存储数 ...

  7. 21天学通C++_Day1

    被阿里实习生的第一轮电话面试刷掉以后,幡然醒悟,发现以前学习的C++基础一点都不扎实.为了把基础打扎实,重新学习一遍:为了让自己不放弃,也顺便可以把当天学到的东西记录下来,开始了写博客. 学习书籍:& ...

  8. 21天学通PythonPDF高清完整版免费下载|百度云盘

    百度云盘:21天学通PythonPDF高清完整版免费下载 提取码:nqa9 豆瓣评分: 书籍封面: 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了P ...

  9. 21天学通Python PDF完整版

    有需要的点击这里自取 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pyt ...

随机推荐

  1. logging模块讲解

    logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...

  2. PHP大小写:函数名和类名不区分,变量名区分

    PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下. 但我不是鼓励大家去用这些规则.推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 <?p ...

  3. MAC 10.6 64wei

    苹果电脑 Mac OS X 10.6 雪豹系统同时支持 32 位和 64 位模式,关于开启 64 位的好处,字太多,本文后半段介绍.下面先说查看你的苹果电脑是否开启了 64 位以及设置苹果电脑 Mac ...

  4. Apache配置中ProxyPass与ProxyPassReverse及ProxyPassMatch的概述

    apache中的mod_proxy模块主要作用就是进行url的转发,即具有代理的功能.应用此功能,可以很方便的实现同tomcat等应用服务器的整合,甚者可以很方便的实现web集群的功能. 例如使用ap ...

  5. Asp.NetCore远程自启动、重启、关闭实现

    一.背景 NetCore作为微服务可以注册到服务中心,服务中心可以远程启动.重启.关闭该微服务 二.实现 1.创建一个NetCore 2.0 WebApi项目 2.创建一个进程去管理NetCore程序 ...

  6. Full Binary Tree(sdut 2882)

    Problem Description: In computer science, a binary tree is a tree data structure in which each node ...

  7. MYSQL中str_to_date函数的用法

    str_to_date(str,format) 函数的用法 str_to_date函数将str转化为日期型的数据,format表示转化后的格式. format参数格式: 常用: %Y  年 %m  月 ...

  8. bash&nbsp;shell笔记2&nbsp;结构化命令

    二.使用结构化命令 知识内容: # 改变命令流 # 使用if-then逻辑 # 嵌套if-then # 测试条件 # 高级if-then功能 许多程序在脚本命令之间需要某些逻辑控制流,有些命令允许脚本 ...

  9. java基础之多线程一:概述

    概述: 进程有多条执行路径, 合成为: 多线程. 进程和线程的描述: 进程: 可执行程序(文件), 例如: .exe//可以把进程理解为一辆车. 一台电脑上可以有多个进程, 这些进程之间的数据是相互隔 ...

  10. 4-3 线程安全性-原子性-synchronized

    原子性它提供了互斥访问,同一时刻只能有一个线程来对它进行操作.能保证同一时刻只有一个线程来对其进行操作的,除了Atomic包之外,还有锁.JDK提供锁主要分两种,synchronized是一个Java ...