IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++ prime 笔记&&心得 (21/08/ 开始 -> 正文阅读

[C++知识库]c++ prime 笔记&&心得 (21/08/ 开始

? ? ?第一章

1. 命令行编译运行?:

? ? ? ? ? ??g++ filename.cpp -o xxx.x (-o可省 默认生成a.out)

? ? ? ? ? ??g++? ?-S ? xxx.cpp ? ? ? (生成编译文件 注意大写S

? ? ? ? ? ? ./xxx. ? ? ? ? ? ? ? ? ? ? ? ? ? ?(打开可执行程序?

2. c++ 标准io库为 :

? ? ?<iostream>?

3. c++有自带的内置类型如int 也可以有自己的类(非struct)?

? ? 可以重载(?)来进行符号操作

4. ? 用<< ? >> ?来进行输出输入 ? ?,可自动分辨类型

? ??第二章

1.基本内置类型同c ? ?增bool等

2. 当我们赋值给无符号类型一个超过表达范围的数,结果是初始值对无符号类型表示数值总数

? ? 取模后的余数 ?

? ? ? ? ? ? 如: ?将-1赋值给8bit的unsigned char 所得的结果是225 ?(负数加上被除数的整数倍直至>0

3. 负数转为无符号数 类似于直接用 2的MAX(bit)幂 - 该负数

4. 可以指定字面值类型 (前缀/后缀

5. 对象(object) 是指一块能储存数据并具有某种类型的内存空间?

? ? ?值: 只读数据 (不能修改

6.初始化和赋值是两个完全不同的操作 (不太懂

7. c++ 初始化形式:

? ? ? ? ? ?=

? ? ? ? ? ={} ?注意:列表初始化存在丢失信息的风险,会报错

? ? ? ? ? {}

? ? ? ? ? ?()

8. 定义与任何函数体之外的变量会被初始化为 0 (意义上的)?

? ? ?函数体内部的内置类型将不被初始化 (未显示初始化时

9. ?声明: 告知这个变量的存在?

? ? ?定义 :创建实体(空间)

? ? ?变量能且只能被定义一次,但可以被声明多次

10.命名规范 :

? ? ? ? ? 标识符要能体现实际含义

? ? ? ? ? 变量名一般用小写字母

? ? ? ? ? 用户自定义的类一般以大写字母开头

? ? ? ? ? 标识符由多个单词组成,应该用_等明显区分

11. ?有关键字 和 操作符代替名?

12. ? :: ?作用域操作符 可以显示的访问命名空间里的标识符

13. ? 显示的访问命名空间 ? std::cout 等

? ? ? ? 文件开头 ?unsigned namespace::name; 或 unsigned namespace std;

14. ? 引用 &

? ? ? ? ? ? ? ? a. ?定义引用时必须初始化 ,将绑定一个对象。无法更改绑定?

? ? ? ? ? ? ? ? b. 类似于const printer 有实体空间 ,顶层自身不能改变

? ? ? ? ? ? ? ? c. 不是对象!! ?出现在任何地方相当于绑定的对象(别名)

? ? ? ? ? ? ? ? d. 类型要严格匹配 : ?限定符等

15. 指针初始化可以为nullptr字面值常量 ?(c中为NULL

? ? ?对nullptr和未初始化的指针解引用是非法的?

16. void* 是一类特殊指针类型 ,只保存着对象的地址,并没有说明类型,所以使用时必须显示的转换为对应类型的指针(c中可以自动转换)

17. ?对const的引用 称为常量引用

如?

? ? ? ? ??

int i=42;
const int &r1= 42;  //可以 r1是个常量引用
const int &r2= i;   //可以 左值限定符包裹右边 

?

?18. ? const printer 和 pointer to const ?

? ? ? ? 常量指针:是顶层的,?自身(指向)并不能修改 ? ??:必须初始化

? ? ? ? 指向常量的指针 : 指向的对象是不能修改的?

19. 顶层const 可以表示任意的对象是常量 如内置的int等?

20. ?赋值规则:左值限定符集合包裹右边

? ? ? ?若是指针:指向的类型要相融?

21. ? ? constexpr

? ? ? 一个对象是不是常量表达式取决于两点: ?

? ? ? ? ? ? ? ? ? ? ? ? a. 数据类型 和 初始值决定 ?

const int a =20;//是常量表达式  a是个常量且 初始值是个字面值常量

const int b= get_size(); // 不是 尽管b是常量,但必须运行时才能得到初始化的值

?constexpr 常量表达式关键字 :

? ? ? 是指值不会改变并且在编译阶段就能计算结果的表达式 ?--> 可以声明为constexpr 类型让编译器来验证是否为常量表达式。

? 当constexpr 声明一个指针时 ,只限定指针本身

22. ?类型别名 :

? ? ? ? ? ? ? ? ? ? ? ? ? a. typedef 是封装的 并不是单纯展开 !!?

? ?如: const限定时?

? ? ? ? ??

typedef char *p_str;

const p_str p1 = nullptr;  //是限定封装类型 -->指针。 所以p1是顶层的

? ? ? ? ? ? ? ? ? ? ? ? ? b. using ? ?

using SI = xxx;

? ? ? ??

23.? ? auto 自动类型说明符 :

? ? ? ? ? ? ? 能让编译器自动去分析 赋值的类型 以此类型来定义变

? ? ? ? ? ? ? ? ? ? ? ? a. auto定义的类型必须有初始值(因为要通过初始值来分析类型

? ? ? ? ? ? ? ? ? ? ? ? b. auto类型 一条语句声明多个变量时,只已第一个为准来分析类型?

? ?

auto sz = 0, pi = 3.14;  //错误 类型不匹配

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?c. ?auto 一般会忽略顶层const ?,可以自己加上

? ? ? ? ? ? ? ? ? ? ? ?d.可以符合声明定义 如 const auto / auto &?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??: ?&和*只从属于某个声明符 ,而不属于基本类型?

? ? ? ?

24. ?decltype 类型指示符 ?:

? ? ? ? ? 只希望推断出类型,但不赋初始值

? ? ? ? 使用形式 : decltype(表达式/变量) 标识符 ;

??: 引用从来都作为绑定对象出现,但在decltype? ? ,真的返回&引用类型;

? ? ? ? ??

int ci = 0,&cj= ci;
decltype(cj) z;  //错误 z是个引用 必须初始化

? ? ? ? ? ? ? ?a. ?如果是个变量 ,则保留顶层等

? ? ? ? ? ? ? ?b. ?如果表达式的值是个左值,则返回该值的引用 ?

? ? ? ? ? ? ??

int *p;

decltype(*p) c;  //错误  *p的结果是个左值int类型--> 所以c 是 int& 必须初始化

? ? ? ? ? ? ??

? ? ? ? ? ? ? c. ? 变量名双层括号的?结果永远是个引用,因为编译器会当成表达式?

? ? ? ? ? ? ? ? ? ? ? ? 如decltype ((ci) ?) ? 是个 int&类型;

25. ?auto 与 decltype 区别?

? ? ? ? ? ? ? ?引用: ?auto 声明为绑定的类型?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decltype 返回的类型就是引用?

? ? ? ? ? ? ? 顶层:

? ? ? ? ? ? ? ? ? ? ? ? auto 一般不保留顶层const ,保留底层

? ? ? ? ? ? ? ? ? ? ? ? ?decltype都保留

? ? ? ?第三章

1. ?命名空间using声明 (见第二章13.

? ? ???:头文件应不包含using声明,因为会被不同文件包含 ?

2. ?标准库<string> ? / string类型定义在 std中?

? ? ? ? a.类似于自动变长字符串 ,用string 来声明对象;

? ? ? ? b. ?可以进行类操作 (可通过函数名字调用?

? ? ? ? ? ? ? ?详细看书77页?

?3. c++一般用 cname头文件,而不使用name.c 形式 ?

4. ?范围for语句 ? :

? ? ? ? ? ? ?自动遍历对象的基本元素?

? ? ?for (declar : 对象)?

? ? ? ? ? ? ? statement?

如:?

for(auto &c: string) 
       c= 'a';      
//定义变量c 为对象里的基本元素 ,如字符串 --> c为 char &
// 讲字符串里字符全换成 'a'

? ? ??:循环体内不能改变对象的大小

?5. ?未初始化的string对象 对第一个解引用应该是合法的,自动包含NUL

?6. ? ?vector ??表示对象的集合 (任意类型数组?

? ? ? ? ? ?a. 是个类模版 ?编译器根据类模版或函数模版创建的过程称为实例化?

? ? ? ? ? ?b.里面集合可以是任何类型,但不能是引用(引用不算对象

? ? ? ? ? ?c. vector 初始化方式?

? ? ? ? ? ? ? ? ? ? vevtor<type> ()/{} /= ?;

? ? ? ? ? ? ??

vector<int> v1(10,0); //圆括号第一个表示个数,第二个表示初始化的值 相当于初始化了十个值为0的元素
vector<int> v2{1,2,3}; // 初始化了三个值 分别为 1,2,3

? ? ? ? ?? :方括号{} 默认为列表初始化,只有当类型不匹配时才会尝试其他?

? ? ? ? ? ? ?d. 除了初始化 ?添加元素?

? ? ? ? ? ? ? ? ? ??使用 ?对象名.push_back(值) 来添加元素 ??

? ? ? ? ? ? ? ??: 不能用解引用添加元素 ,因为是个空vector

? ? ? ? ? ? ? ?e. vector 对象下标运算符可以访问已存在的元素,而不能用于添加元素

? ? ? ? ?? ? ??

? ? ? ? ?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:49:20  更:2021-08-30 11:51:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 0:20:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码