| |
|
开发:
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的引用 称为常量引用 如? ? ? ? ? ??
? ?18. ? const printer 和 pointer to const ? ? ? ? ? 常量指针:是顶层的,?自身(指向)并不能修改 ? ??:必须初始化 ? ? ? ? 指向常量的指针 : 指向的对象是不能修改的? 19. 顶层const 可以表示任意的对象是常量 如内置的int等? 20. ?赋值规则:左值限定符集合包裹右边 ? ? ? ?若是指针:指向的类型要相融? 21. ? ? constexpr ? ? ? 一个对象是不是常量表达式取决于两点: ? ? ? ? ? ? ? ? ? ? ? ? ? a. 数据类型 和 初始值决定 ?
?constexpr 常量表达式关键字 : ? ? ? 是指值不会改变并且在编译阶段就能计算结果的表达式 ?--> 可以声明为constexpr 类型让编译器来验证是否为常量表达式。 ? 当constexpr 声明一个指针时 ,只限定指针本身 22. ?类型别名 : ? ? ? ? ? ? ? ? ? ? ? ? ? a. typedef 是封装的 并不是单纯展开 !!? ? ?如: const限定时? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? b. using ? ?
? ? ? ?? 23.? ? auto 自动类型说明符 : ? ? ? ? ? ? ? 能让编译器自动去分析 赋值的类型 以此类型来定义变 ? ? ? ? ? ? ? ? ? ? ? ? a. auto定义的类型必须有初始值(因为要通过初始值来分析类型 ? ? ? ? ? ? ? ? ? ? ? ? b. auto类型 一条语句声明多个变量时,只已第一个为准来分析类型? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c. ?auto 一般会忽略顶层const ?,可以自己加上 ? ? ? ? ? ? ? ? ? ? ? ?d.可以符合声明定义 如 const auto / auto &? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??: ?&和*只从属于某个声明符 ,而不属于基本类型? ? ? ? ? 24. ?decltype 类型指示符 ?: ? ? ? ? ? 只希望推断出类型,但不赋初始值 ? ? ? ? 使用形式 : decltype(表达式/变量) 标识符 ; ??: 引用从来都作为绑定对象出现,但在decltype? ? ,真的返回&引用类型; ? ? ? ? ??
? ? ? ? ? ? ? ?a. ?如果是个变量 ,则保留顶层等 ? ? ? ? ? ? ? ?b. ?如果表达式的值是个左值,则返回该值的引用 ? ? ? ? ? ? ? ??
? ? ? ? ? ? ?? ? ? ? ? ? ? ? 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? 如:?
? ? ??:循环体内不能改变对象的大小 ?5. ?未初始化的string对象 对第一个解引用应该是合法的,自动包含NUL ?6. ? ?vector ??表示对象的集合 (任意类型数组? ? ? ? ? ? ?a. 是个类模版 ?编译器根据类模版或函数模版创建的过程称为实例化? ? ? ? ? ? ?b.里面集合可以是任何类型,但不能是引用(引用不算对象 ? ? ? ? ? ?c. vector 初始化方式? ? ? ? ? ? ? ? ? ? ? vevtor<type> ()/{} /= ?; ? ? ? ? ? ? ??
? ? ? ? ?? :方括号{} 默认为列表初始化,只有当类型不匹配时才会尝试其他? ? ? ? ? ? ? ?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语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |