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
类型转换:
- 初始化和赋值进行的转换
小转大、整型转浮点一般没有什么问题
较大浮点类型转较小浮点类型:精度降低或值超过范围带来的不确信
浮点转整型:小数部分丢失或值超过范围带来的不确信
较大整型转较小整型:超过范围导致可能丢失高位数据
- C++11的{}方式初始化进行的转换
对类型转换的严格更加要求,不允许缩窄
int x=66;
char k={x}; //甚至这种情况不允许,编译器无法提前得知x的范围;基于不允许缩窄原理则不允许
- 表达式中的转换-隐式自动转换
计算表达式中,整型(长度小于int的)默认自动提升为int,即使表达式两端都为short
传统c语言中,float默认自动提升double
其他情况下,当运算涉及两种类型时,较小类型一般会被转换成较大的类型。
C++11有个校验表
- 传递参数时的转换
在取消函数原型中对于类型的限制,则会默认提升int和double
- 强制类型转换
常用的C和C++强制类型风格不再介绍,新格式的想法就是贴近函数调用
C++引入static_cast<>
static_cast (value);
C++11中的auto声明
自动类型推断一般用在STL中更好
std::vector scores;
auto pv=scores.begin();