首页 > 编程语言 > 详细

C++ 基础(一)

时间:2021-07-11 01:01:06      阅读:18      评论:0      收藏:0      [点我收藏+]

1. 现代C++

  • 20世纪80年代,C++被发明出来并标准化后演化速度并不快。
  • 直到2011年,ISO发布了C++编程语言的一个新的版本,被称为C++11,将稍有过时的C++语言带入到21世纪,C++11现代化了C++语言和这种语言的使用方式,以至于可以将C++11看做一种新语言。
  • 使用C++11及更新版本的功能进行“编程”,称为现代C++11编程,所谓“现代”的编程方法,是人们对良好编程风格达成的共识,运用了一套指导原则和最佳实践,使C++11编程更加简单,更难出错,并且生产效率更高。
  • 特点:容器、智能指针、RAII技术、使用异常报告错误、通过移动语义按值传递对象、编写算法而不是循环等。
  • C++标准使C++社区活跃起来,每3年,会发布该标准的一个新版本。

 

2. 标准库

  • C++附带大量预先编好的代码,提供了所有这些功能,因此不需要再编写它们了。
  • C++带有一个非常大的标准库,包含了大量例程和定义,提供了许多功能。如数值计算,字符串处理,排序和搜索,数据的组织,管理,输入输出等。
  • 标准库非常大,功能十分全。

 

3. C++程序概念

  • 预处理指令和标准库头文件,iostream包含使用标准库例程,从键盘输入以及将文本输入到屏幕上所需的定义,具体而言定义了std::cout和std::endl。
  • 编译之前把头文件的内容包含到源文件中。
  • 函数:必须有一个以main为名的函数,执行总是自动从此开始。
  • 语句:语句是C++程序基本单元,把多个语句放在了一对{}中,这些语句称为语句块。
  • 数据的输入输出:输入和输出是使用流来执行的。数据源或者数据接收器,使用抽象的表示的优点是无论流代表什么设备,编程都是相同的。
  • return语句:return语句会结束函数,控制权返回给调用函数的地方。
  • 名称空间:大项目涉及多个程序员,可能会有命名问题。C++提出了名称空间的概念,::是作用域解析运算符
  • 名称和关键字:
    • 定义名称的规则:A~Z,a~z,0~9和下划线,必须以字母或下划线开头,名称是区分大小写的。
    • 不使用超过12~15字符的名称。
    • 大小写有区别,约定把第二个及以后的各个单词的首字母大写,或者使用下划线来区分它们。
    • 保留字:class,double,throw,catch等。
    • 不应使用的命名:连续两个下划线开头的名字;以一个下划线跟一个大写字母开头的名称;在全局名称空间内所有以下划线开头的名字。

 

4. 类和对象

  类是定义数据类型的代码块。类的名称是数据类型的名称。

 

5. 模板

  • 可以使用模板给特定的自定义类型生成类或函数的代码。
  • 编译器使用类模板会生成一个或多个类系列,使用函数模板会生成函数。
  • 标准库大量的使用模板。

 

6. 代码的表示样式和编程风格

 

7. 创建可执行文件

  • C++创建可执行的模块三个步骤:
    • 预处理器处理所有预处理指令,把include复制到cpp中;
    • 把每个cpp文件转为对象文件,源文件对应的机器码;
    • 链接程序把程序的对象文件合并到包含完整可执行程序的文件中。
  • 源文件:.cpp文件 -> 编译器 -> 对象文件(机器码) -> 链接程序 -> 可执行文件。

 

8. 过程化编程和面向对象编程

  • 过程化模型:
    • 为程序要实现的整个过程进行清晰的说明。
    • 整个过程可以分为可工作的计算单元,这单元尽可能是自由包含的,常常对应于函数。
    • 根据正处理的数据的基本类型来编写函数。
  • 面向对象的模型:
    • 根据问题详细说明确定问题涉及的对象类型。
    • 为问题需要的每种新数据类型生成一个详细的方案,包括对象的操作。
    • 根据定义的新数据类型及其允许的操作,编写程序逻辑。

 

9. 表示数字

  • 二进制  八进制  十六进制
  • 负数的二进制:最左边的位作为符号位。
    • 符号幅值表示法:每一个数字由一个符号位和给定位数组成,符号位0表示正数,符号位1表示负数。
    • 不能把符号位简单的看做另一个位:现代计算机都采用了一种不同的方法,使用二进制负数的2的补码表示。
  • 从正数中构建负数的2的补码形式:
    • 简单的带符号位的运算:12 (0000 1100)  +  -8(1000 1000)  = 1001 0100 (-20) 这个计算结果明显是错误的。
    • 负数的二进制补码形式:
      • +8 转为二进制:0000 1000
      • 反转每个二进制数字,得到1的补码形式:1111 0111
      • 给这个数加上1,得到2的补码形式:1111 1000
      • 加法:12 (0000 1100) + -8 (1111 1000) = (0000 0100) 4
  • 使用负数的2的补码形式会使计算机上的算术运算非常的简单快捷。
  • 大端和小端系统
    • 小段系统:高位的数据存放在高地址中,Intel的PC中一般如此设计。
    • 大段系统:高位的数据存放在低地址中,Power-PC和ARM处理器一般如此设计。
    • 无论是大端系统还是小端系统,每个字节中,最高位放在左边,最低位放在右边。
  • 浮点数
    • 表示数字时分为两个部分:尾数和指数,这两部分都可以是正数或者负数。
    • 数字的幅值是尾数与10的指数次方相乘的结果。
    • 365写成浮点数的形式是:3.650000E02 有7个尾数,2位指数:3.650000 x 10^2  (常规的十进制表示法)
    • -3.650000E-03表示的是-3.65x10^-3,浮点数:小数点是浮动的,位置取决于指数值。
    • 2134311179表示为:2.134311E09,丢掉了低位数,即:2134311000.
    • 注:E+06和E-6分别表示小数点向右向左移动的位数。
  • 表示字符:
    • ASCII:
      • 美国信息交换标准码,是7位代码,共有128个不同的代码值。
      • ASCII扩展版,8位,128~255是可变的,一种变体是Latin-1欧洲,俄语等语言。
      • LISC:通用字符集,代码有32位,提供数亿个不同的代码值。
    • UCS和Unicode:
      • USC定义字符和代码点之间的映射,小于256的代码值十分常见。
      • Unicode是一个标准,定义了一组字符及其代码点。
      • Unicde提供了多个字符编码方法,常见的是UTF-8,UTF-16,和UTF-32。
        • UTF-8 长度在1字节和4字节之间变化的序列。
        • UFT-16 一个或者两个16位值,包含UTF-8。
        • UTF-32 将所有字符表示为32位值。
  • C++源字符
    • 基本源字符集:包括大写字母A~Z和a~z,数字0~9,空白字符,空格,水平和垂直制表符,换行符,字符_ {} [] # () <> % :;.?*+-/^&|~!=,\"‘一共96个字符。
    • 转义序列:是指字符的一种间接方式,总以一个反斜杠\开头,转义序列的替代方法是:原字符串字面量。

 

C++ 基础(一)

原文:https://www.cnblogs.com/yangdadahome/p/14995013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!