C++ primer plus 学习记录


C++ primer plus记录
大一学习C++ 拿这本书再巩固一下
仅记录个人有新知的地方
2021-3-2 到ch3为止

目录
  • ch1 预备知识
  • Ch2 进入C++
  • ch3 处理数据

ch1 预备知识

C++融合三种编程方式:C语言代表的过程性语言;基于C语言添加的OOP;C++模板支持的泛型编程

Ch2 进入C++

作为借口的函数头:main被启动代码调用

名称空间:

using namespace std;
using std::cout;

声明不一定是定义:定义声明和引用声明

输出存在着信息编码的转换:数字到字符

函数原型之于函数 类之于对象

ch3 处理数据

头文件包含一系列符号常量

C++11变量初始化方法

int a={3};
int a{3};
//下面默认为0
int a={};
int a{};

整型字面值:

int a=42;
int b=0B101;    //大小写都行,十六进制也是
int c=042;
int d=0x42
cout<

cout默认统一转换成十进制输出,可以格式化输出来决定输出的进制。
当然无论什么形式,计算机中存储信息都是二进制数据

wchar_t
日文汉字处理系统:程序需要处理的字符集无法用1个8位的char表示。宽字符类型wchar_t来拓展

wchar_t bob=L'P';
wcout<

同理还有char16_t char32_t
C++11新增类型

char16_t ch1=u'q';
char32_t ch2=U'T';

浮点数的表达形式:
标准小数点表示法 8.0
E表示法 2.52e+8
浮点常量

1.23f   //float
2.34E3f //float
2.3     //double
2.2L    //long double

类型转换:

  1. 初始化和赋值进行的转换

小转大、整型转浮点一般没有什么问题
较大浮点类型转较小浮点类型:精度降低或值超过范围带来的不确信
浮点转整型:小数部分丢失或值超过范围带来的不确信
较大整型转较小整型:超过范围导致可能丢失高位数据

  1. C++11的{}方式初始化进行的转换

对类型转换的严格更加要求,不允许缩窄

int x=66;
char k={x}; //甚至这种情况不允许,编译器无法提前得知x的范围;基于不允许缩窄原理则不允许
  1. 表达式中的转换-隐式自动转换

计算表达式中,整型(长度小于int的)默认自动提升为int,即使表达式两端都为short
传统c语言中,float默认自动提升double
其他情况下,当运算涉及两种类型时,较小类型一般会被转换成较大的类型。
C++11有个校验表

  1. 传递参数时的转换

在取消函数原型中对于类型的限制,则会默认提升int和double

  1. 强制类型转换

常用的C和C++强制类型风格不再介绍,新格式的想法就是贴近函数调用
C++引入static_cast<>

static_cast (value);

C++11中的auto声明
自动类型推断一般用在STL中更好

std::vector scores;
auto pv=scores.begin();