c++语言知识点汇总
Posted zhang-qc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++语言知识点汇总相关的知识,希望对你有一定的参考价值。
c++ primer version-5 的整理
section 1:
内置类型和自定义类型;
main函数的返回值:指示状态。0:成功;1:系统定义。
unix和win系统中,执行完程序可以使用echo命令得到返回值。
编译器不同?
iostream有四个IO对象,cin,cout 和 cerr clog (可以往流中写入数据)
输出运算符 << 的左侧必须是ostream对象,右侧为要打印的值,如果不是内置的类型,则需要运算符的重载(友元、成员函数,写法?);endl 除了结束该行,还可以刷新流,将buffer内容刷到设备;
命名空间,用于避免名字定义的冲突
当cin>>object作为循环判定条件时,效果是检测流的状态。有效:未遇到错误;无效:遇到无效输入 or 遇到文件结束符(eof:win使用ctrl z,unix 用 ctrl D)
edit-confile-debug 逐个修正bug
头文件的引用:如果是标准库,用<>,如果不是,使用"xx.h "
文件重定向:命令行 exefile_name <infile>outfile
----------------------------------------
section 2:变量与基本类型
int long 4B 以及long long 8B 的长度;当运算同时有带符号和不带符号的数,会转化为不带符号
可寻址最小单元 字节;存储基本单元 字(看计算机是64bit的)
0开头8进制;0×开头16进制
浮点数,指数部分用e表示,默认字面值是double
转义:常用的有 换行
建议初始化每个内置类型变量
分离式编译——声明和定义;使用 extern 表示不定义,不初始化变量
命名规范:自定义类名大写开头,变量名小写
引用(这里指左值引用)必须初始化,需要且只能绑定在对象上,引用即别名
指针和引用都实现了间接访问。区别:指针本身就是对象,无需定义赋初值;允许对指针赋值和拷贝,可以指向不同的对象
空指针 NULL(相当于用0初始化指针) or nullptr(新标准,特殊类型字面值,推荐使用)
void* 指针:存放任意类型对象的地址,只能拿来作比较,or 赋值给另外的void×指针。不能操作该类指针的对象,因为只表示内存空间
const 对象必须初始化,如果想在多个文件间共享const对象,需要在定义前加extern
如果引用指向的是常量,则应该申明为常量引用 ;如果不是,那么对于它的常量引用不能通过引用来修改它的值,只能通过它本身修改
常量指针:顶层const(常量指针):int * const p,表示指针本身是常量,不能修改指针指向另外的对象;底层const(指向常量的指针),修饰的是*p,不能修改指向的值*p,可以换对象
aoto会忽略掉顶层const的特性
decltype 类型指示符,decltype(a) r,将r的类型设为a的类型,
constexpr(c++11) 常量表达式 会检查是不是常量表达式,在编译时会计算
typedef or using(新标准) 别名
头文件不能被定义两次——头文件保护符——#ifndef #define #endif
----------------------------------------------
section 3:字符串、向量、数组
头文件不用using namespace的声明
string s(n,‘c‘) 结果为n个c的串;初始化使用等号的是拷贝初始化
字符串能直接比较,getline(is,s)从is中读取一行给s
empty函数和size函数;size函数返回size_type类型变量,是无符号整型数,注意unsigned 数和整型数比较和运算
处理字符:cctype中包含了很多比较函数,例如isalpha(c)如果是字母时为真,tolower(c)如果c是大写字母,输出对应小写字母,否则原输出
vector就是个模板类,创建时需要实例化,初始化方式;使用范围for时,vector的遍历序列大小不能发生改变;
迭代器的目的是通用,所有stl容器都可以使用;可以用aoto变量指向 容器的begin or end返回值
字符数组 注意要留1个单位来保存空字符
数组也可以使用begin和end函数得到指针,end(a)表示a中最后元素的下一位置的指针
指针运算得到的类型是 ptrdiff_t 定义在cstddef头文件与机器相关的类型,是带符号的
strlen strcmp strcat strcpy 都是c风格的函数,c风格使用字符数组表示字符串,这在c++中也可以操作,且很多可以兼容运算,但不推荐
-----------------------------------
section 4:表达式
逻辑与和或的短路求值
少用++的后置版本,但是在*iter++形式广泛使用
sizeof 返回size_t类型
隐式类型转换 和 显式类型转换:static_cast(除了底层const外的从大类型到小类型的转换,也可以找回void×) const_cast(底层const去掉const性质) reinterpret_cast(重新解释,很容易出错) dynamic_cast
---------------------------------------
section 5:语句
switch() case : default:
范围for语句,直接使用aoto,如果还需要对变量更改,必须是aoto &i
如果抛出了异常,但是没有catch,那么最终会转到terminate的标准库函数去处理,一般是程序非正常退出
标准异常:定义在4个头文件中:exception stdexcept
---------------------------------
section 6:函数
传参:传值(指针也是拷贝),传引用(避免拷贝,与实参绑定,c++推荐使用);引用形参还可以返回额外信息,如果不想改变,则可以加const
顶层const传值时会忽略掉,所以尽量使用常量引用
数组不能拷贝,所以只能传指针或者引用。由于指针不知道数组的大小,所以,通过标记或者使用前尾指针or传递一个数组大小来解决
数组的引用 表示为 int (&arr) [10] 必须加括号,同样指针也是 需要加括号,不然就是10个指针构成的数组
main函数可以传参,argc,argv【】;其中argv[0] 表示程序名
如果实参的个数不知道,且属于同一类型,可以使用 initializer_list<T> il 传参,就相当于vector一样,是一个灵活的模板类,支持迭代器,不过内部的元素是const类型
省略符形参 仅仅可用于通用的类型
不要返回局部对象的引用或指针
返回值可以是vector,直接return {元素1,元素2....}
以上是关于c++语言知识点汇总的主要内容,如果未能解决你的问题,请参考以下文章
熬夜爆肝!C++核心进阶知识点汇总整理万字干货预警 建议收藏