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

转义:常用的有 换行 \n

建议初始化每个内置类型变量

分离式编译——声明和定义;使用 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个单位来保存空字符\0

数组也可以使用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....}

原文地址:https://www.cnblogs.com/zhang-qc/p/9369133.html

时间: 2024-08-02 03:29:48

c++语言知识点汇总的相关文章

CodeIgniter框架——知识点汇总

NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五.CodeIgniter 框架中的控制器.视图.模型及数据库操作 六.CodeIgniter 框架中辅助函数.类库.适配器的学习 七.…… NO2. 一.CodeIgniter 是什么? 1.CodeIgniter 是一个应用程序框架 CodeIgniter 是一个为用 PHP 编写网络应用程序的人员

《正则表达式》知识点汇总摘录

开园一个月了,但一直没有抽出多少时间,就算有时间,也不知道怎么组织语言记(不是写,是记,写是一个创造的过程,像我这等程序猿,猿嘴吐不出象牙!)点东西!翻翻过去手头整理的一些知识点杂记,然后再结合网上的一些,今天对正则表达式在做一个个人的知识汇总摘录吧!程序员都是共产主义者,一点不假!大部分时候我们只是互联网的搬运工,堆砌者(扯远了,当然成为互联网创造者一直使我们的目标!). 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串&quo

【数据库】数据库面试知识点汇总

转自:https://www.cnblogs.com/wenxiaofei/p/9853682.html 数据库面试知识点汇总 一.基本概念 1.主键.外键.超键.候选键 超键:在关系中能唯一标识元组的属性集称为关系模式的超键.一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键.超键包含候选键和主键. 候选键:是最小超键,即没有冗余元素的超键. 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合.一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Nul

赵雅智:js知识点汇总

赵雅智:js知识点汇总,布布扣,bubuko.com

Lua语言基础汇总(3) -- 语句

赋值 赋值的基本含义是修改一个变量或一个table中字段的值,这个和其它语言没有多少区别,但是对于Lua,有一个特性,它允许“多重赋值”,也就是一下子将多个值赋予多个变量,例如以下代码: 1 2 3 local x1, x2 = 2, 4 print(x1)     -->2 print(x2)     -->4 在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值,例如以下用法,可以非常简便的交换两个元素的值: 1 2 3 4 local x1, x2 = 2, 4 x1, x2 

Lua语言基础汇总(6)-- 迭代器与泛型for

前言 迭代器就是一种可以遍历一种集合中所有元素的机制,在Lua中,通常将迭代器表示为函数.每调用一次函数,就返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之后保存一些状态,这样才能知道它所在的位置及如何走到下一个位置,通过之前博文的总结,闭包对于这样的任务提供了极佳的支持.现在我们就用代码来实现一个简单的迭代器. 1 2 3 4 5 6 7 8 9 10 11 12 function values(tb)      local i = 0      return function (

Lua语言基础汇总(13)-- Lua中一些常用的库

前言 这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库.简单的说就是几个API的介绍.所以说,看起来比较容易,也没有多大的分量.就是纯粹的总结.使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量.希望大家以后也不要重复造轮子了. 数学库 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 1. 三角函数(sin,cos,tan……) 所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转

Lua语言基础汇总(9)-- Lua中__index和__newindex实践

前言 本文将通过几个简单的实例演示,巩固对__index和__newindex的理解,同时加深对Lua中元表和元方法的理解,如果对Lua的元表和元方法还不是很熟悉的话,请参考这篇文章:<Lua中的元表与元方法>. 具有默认值的table 我们都知道,table中的任何字段的默认值都是nil,但是通过元表,我们可以很容易的修改这一规定,代码如下: 1 2 3 4 5 6 7 8 9 function setDefault(tb, defaultValue)      local mt = {__

Lua语言基础汇总(12)-- Lua中的面向对象编程

简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 1 2 3 4 5 6 7 8 9 10 11 12 local tb1 = {a = 1, b = 2} local tb2 = {a = 1, b = 2} local tb3 = tb1   if tb1 == tb2 then      print("tb1 == tb2") else      print("tb1 ~= tb2") end   tb3.a = 3 pri