C++术语俗解

C++做为一种复杂的编程语言,其最晦涩的莫过于各个术语。程序员

如下就常用的术语,逐个俗解(特别声明:为了对术语的更好理解与记忆,仅表明我的的俗识,如有不妥之处望给予指正),分享共勉。算法

内存:一片计算机执行程序时能够利用的物理空间。用心读这句:计算机所作的一切都是对现实世界的模拟。所谓物理空间,即就是现实世界常说的地理空间。在计算机的模拟世界中,把切切实实客客观观存在的称为物理空间,相对于逻辑空间而言。买手机时,其中有一项重要参数为运行内存,即就是手机操做系统执行程序时能够利用的物理空间大小,而执行程序怎么理解呢?好比你对着手机屏幕点了一下微信图标,微信界面就打开了,操做系统启动微信即执行程序。编程

变量:对内存区域,从逻辑上划分红一块一块,起的名称。用心读这句:计算机所作的一切都是对现实世界的模拟。内存区域能够形象理解为整套房子购房合同书上的实测面积大小,而一块一块能够类比理解为一块公摊、一块客厅、一块餐厅、一块厨房、一块主卧、一块次卧、还有一块卫生间等等,所谓的公摊、客厅、餐厅、厨房、主卧、次卧、卫生间等等都是现实世界人们起的名称,而变量是对内存区域从逻辑上划分各个块后起的名称。或者还能够再类比理解,把内存区域想象成一张大大的中国地图(哦,对,就像一只鸡同样),北京、天津、上海、重庆、河北、山西、辽宁、吉林、黑龙江、江苏、浙江等等都是现实世界划分各个块后人们起的名称,而变量是计算机语言对内存区域,模拟现实世界从逻辑上,划分各个块后起的名称。数组

类型:把内存区域划分为块的大小依据。假如,把中国比做一种类型,声明一个这种类型的对象,那么确定在地球上划分为一个像鸡形状的块;同理,甘肃比做一种类型,声明一个这种类型的对象,那么确定在地球上划分一个像哑铃形状的块;陕西比做一种类型,声明一个这种类型的对象,那么确定在地球上划分为一个像钥匙形状的块;河南比做一种类型,声明一个这种类型的对象,那么确定在地球上划分为一个像金鱼形状的块。类比理解编程语言中的类型,win32系统下,int类型占4个字节,double类型占8个字节等等,意味着不一样类型可能划分块的大小有所不一样。浏览器

数组:有限个相同类型变量在物理空间连续存储的一种类型。去掉定语,即数组是一种类型。其实,稍微打开思路想象一下,假如同一种类型的变量有不少个(有限的,好比十个,一百个等等),那么为了方便简明表示应该如何表述?难道要int a1; int a2; int a3等等一直写代码到int aN; 吗?对,人类没有那么傻,的确不须要,能够简化为int a[N]; 一目了然,童嫂无欺,老小皆晓。即就表示有N个int类型的变量连续存储于内存中。尤为注意,数组是在内存中连续存储的有限个同等大小块的集合。用心读这句:计算机所作的一切都是对现实世界的模拟。早上上班坐地铁来的吧?地铁的每节车箱类比为一种类型,那么一趟地铁就有十来个同类型的车箱,并且是连续排在一块儿。微信

结构:有限个不一样类型变量在物理空间连续存储的一种类型。去掉定语,即结构也是一种类型。其实,再稍微打开思路想象一下,假如编程语言须要描述一我的的特征,有姓名、性别、身高、籍贯、家庭住址、身份证号码等等特性,如今拟定姓名为字符数组,性别为int类型,身高为double类型,籍贯为枚举类型,家庭住址为字符串类型、身份证号码为字符数组等等,那么,你们都知道咱中国最不缺人,须要描述这么多人,难道每一个人都要把这些特征写一遍吗?那样,是否是程序员就不会失业了?那样,是否是你们均可以成为程序员了?那样,设计C++编程语言的人是否是脑子抽风了?对,人类没有那么傻,的确不须要,能够简化为person china[N]; 而person为人的类型便可。尤为注意,结构是在内存中连续存储的有限个不一样等大小块的集合。编程语言

联合:一种特殊的结构类型。特殊之处体如今什么地方?先想一个实际问题,假如定义了一个结构体,这个结构体有十个成员变量,可是呢,当真正实际使用时候,每次咱们只使用结构体其中的一个变量,其余变量对咱们都没有实质性的意义,此情境下一个结构体对象就很耗物理空间,怎么办?联合就应运而生了。联合就是成员变量有且仅有一个有效的类型。尤为注意,联合体的大小由其全部成员变量中类型占用内存最大的一个决定。到此为止,数组结构联合联系:结构是对数组的扩充,而联合倒是对结构的收敛。函数

枚举:一种建立符号常量的类型。生活中,赤、橙、黄、绿、青、蓝、紫能够理解为符号常量,枚举便是对有限个符号常量集合建立的一种类型。结合实际,一般一星期有七天能够定义为一种枚举类型,或者一年有十二个月也能够定义为一种枚举类型。枚举类型的变量只能够初始化为枚举符号常量。工具

指针:对内存地址这种类型特地起的别称,即指针是一种类型。一个指针变量有双重类型属性,int型指针变量一则表示自己的值是个内存地址,二则表示此变量指向了一个int类型变量的起始地址。一个指针变量的值为一个内存地址,一个内存地址通常状况下为一个变量(或对象)在内存中存储的起始地址。指针变量的类型取决于指针指向变量的类型,指针指向变量的类型所占内存的大小决定了指针变量从起始地址丈量内存区域的步长大小。好比,win32系统环境下,short类型指针每次从起始地址丈量2个字节,int类型指针每次从起始地址丈量4个字节,double类型指针每次从起始地址丈量8个字节。相比于变量名,指针更微观,至关于从具体的物理空间角度探索对象的信息。只要定义一个对象,那么这个对象信息确定是存储在内存中的某一块物理地址空间中,通常咱们经过对象名称调用对象。指针即换了个角度,从对象信息存储的物理地址位置块直接调用对象。好比一个学生张三的学号为080605112,能够理解为八年级六班五排十一座二号,通常状况下,老师上课喊张三起来回答问题,也有另外一种状况,老师能够直接经过学号定位到这个具体位置的同窗(即张三)起来回答问题。spa

函数:一种完成特定功能的工具。一个函数为了实现一种功能,一个函数是为了实现一种客观需求功能而设计的对应工具。用心读这句:计算机所作的一切都是对现实世界的模拟。通俗一点说,函数其实就是一种工具。程序其实也很简单的,别被某些老师(专门忽悠学生的人)把你吓着了。函数是一个功能体。那么,既然是一个功能体,就从现实中的某个例子开始分析一下:什么是功能体?好比:一台豆浆机,插上电它就能够运做,那么电资源就是它的运做条件,如同函数必需要放在main()函数内部调用是同样同样的。若是不插电,也就是说单个功能分析,能够想象一下,豆浆机它要制造豆浆,制造豆浆确定要有原材料,对,那什么是它的原材料呢?好,你可能很清楚,须要豆子。对头,豆子是一类粮食,对吗?OK?Do you understand?函数的参数实质上就是这个功能体所需的资源。只不过模拟现实,各自有了虚拟意义上赋予的类型,现实中人们不在乎这样的概念而已。好,再接着分析,豆浆机把豆子放进去,而后插上电源,再打开机子电源,磨豆浆,过几分钟(其实这就是进程的经典概念)后,关掉电源,打开豆浆机,倒出来的就是你求之不得的豆浆。这样子就好理解了,哦,那也就是说,函数的返回值就是所谓的这个功能体的功能实现的结果。

参数:形参,即形式参数,声明对于函数功能体而言须要的资源类型及其名称;实参,即实际参数,对形式参数进行初始化的赋值。

引用:某块已肯定名称内存的别名。尽管是个别名,但引用能够“从一而终”,而不像某某居然会“见异思迁”。既然都已肯定了名称,为何还要有个别名呢?主要用于函数参数和返回值类型。

内联函数:以空间的代价换时间的优点。日常所谓的函数即常规函数,而为何须要内联函数?好比正在读一本专业书(内容中有专业术语),忽然提到一个很难理解的术语,想第一时间知道词意,确定会上网查,在查这个词以前,须要先记住当前读到了多少页第几行,而后待把这个词意查清楚弄明白以后,又回过神开始接着以前记录的地方往下继续读。假设记录中断的页数和行数用了一分钟,因为对浏览器使用不娴熟,查询这个词花费了两分钟,理解揣摩词意用了一分钟,再回过神接着中断记录点开始继续读又耽搁了一分钟,那么整个一系列过程至关于使用了五分钟。其实,这个假设的全流程正是操做系统对常规函数的调用过程,除理解词意使用的一分钟外,其他使用的四分钟即处理函数调用机制的时间代价。试想为了弄明白一个词意,足足耽搁了四分钟时间,而真正理解词意只用了一分钟时间,有什么好的方式能够提到阅读的速度呢?好,最笨的方法(注意是最笨的方法,若是尚未想到这个方法,说明还不是最笨的人)就是把这个术语词直接替换为你查询到并理解揣摩的那一句或几句解释语便可。这样作的代价就是浪费了纸张,争取到了时间上的优点。同理,相较于常规函数,内联函数就这样应运而生了。

:因为内置类型不够丰富,为知足需求设计的一种自定义类型。结合上面类型的解释理解类的概念,类是一种用户自定义的类型。类的设计主要分为两部分,成员属性和功能属性即成员变量和功能方法。类是高度抽象的一个概念,面向对象编程的核心在于如何设计类。现实中人们所谓的水果便是一个类型,假如老婆让你去买一斤水果,你知道买什么吗?水果是很抽象的一个概念,而具体是指香蕉?苹果?梨?等等,能够理解为水果这种类型的对象而已。

临时变量:也称临时对象,C++编译器在须要时候临时生成的变量(对象)。轻轻的来,悄悄的去,源代码中根本看不到。那么,人们是怎么知道有临时变量存在呢?软件讲究逻辑,逻辑推理出来的。吹得这么神乎?哈哈,通常直观看不见摸不着的东西都很神奇。那么在何时须要呢?在两种状况下产生:对函数的形参进行初始化时的隐式类型转换和一个函数返回对象时。

const引用参数:对于形参为const引用的C++函数,若是实参与形参类型不匹配,则其行为相似于按值传递。为确保原始数据不被修改,将使用临时变量来存储值。

智能指针:有析构函数的类对象指针。对于通常的常规指针,到底在应用程序中该什么时候何地释放掉它所指向的内存成为了致使C++程序内存泄露的一个大难题。

因而乎,程序员类比对象的人为构建后自析构的命理对指针进行了包装。若是一个指针是对象,则在对象过时时,它的析构函数会自动释放掉它所指向的内存,即所谓的智能指针。

泛型编程:编写独立于数据类型的代码。

模板:完成通用程序的工具。模板使得算法独立于存储的数据类型,而迭代器使得算法独立于使用的容器类型。

容器:存储同种类型值的单元。

算法:完成特定任务的处方。

迭代器:遍历容器元素的对象,与遍历数组的指针相似,可理解为广义指针。

 

Good  Good  Study,  Day  Day  Up.

顺序  选择  循环  总结

相关文章
相关标签/搜索