- 博客(39)
- 收藏
- 关注
转载 你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针
第7章 C++世界的奇人异事在武侠小说中,初入武林的毛头小子总是要遇到几位奇人,发生几件异事,经过高人的指点,经历一番磨炼,方能武功精进,从新手成长为高手。在C++世界,同样有诸多的奇人异事。在C++世界中游历学习的我们,是否也同样期望着遇到几位奇人,经历几件异事,而后从一个C++新手成长为C++高手呢?武林中的奇人异事可遇而不可求,但是C++世界中的奇人异事却可以为你一一引见。...
2015-07-30 10:53:00
205
转载 你好,C++(39)6.4.4 依葫芦画瓢:用C++表达设计结果(下)
6.4.4 依葫芦画瓢:用C++表达设计结果完成上面的分析与设计之后,小陈感觉已经成竹在胸胜利在望了。他知道,只要完成了程序中的类以及类之间关系的分析和设计,整个程序就相当于已经完成了一大半。接下来的工作,不过就是依葫芦画瓢,用C++这种开发语言将之前的设计结果表达出来,形成具体的程序而已。按照之前的设计结果,小陈决定首先实现最基础的Employee类:// Salar...
2015-05-23 12:49:00
196
转载 你好,C++(38)从问题描述中发现对象的属性和行为 6.4 工资程序成长记:类与对象(上)...
6.4 工资程序成长记:类与对象“夜半三更哟,盼天明;寒冬腊月哟,盼春风。若要盼得哟,涨工资,岭上……”自从上次老板许诺给小陈涨工资以后,一转眼又过去几个月了,可是涨工资的事一点动静都没有。小陈只好天天哼着这首歌,自己安慰自己,天总会亮的,春天总会来的,而工资也总会涨的。这天,小陈正在哼这首歌,没想到老板又让他去办公室。小陈心中那个高兴啊,心想,盼星星盼月亮,总算盼到了这一天啊。...
2015-04-29 13:30:00
226
转载 你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态
6.3.3 用虚函数实现多态在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的“一种”,就像“学生”是“人”类中的一种一样。既然“学生”是“人”的一种,那么在使用“人”这个概念的时候,这个“人”可以指的是“学生”,而“学生”也可以应用在“人”的场合。比如可以问“教室里有多少人”,实际上问的是“教室里有多少学生”。这种用基类指代派生类的关系反映到C++中,就是基类...
2015-04-15 15:21:00
223
转载 你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的
6.3 类是如何面向对象的类作为C++与面向对象思想结合的产物,作为面向对象思想在C++中的载体,它的身上流淌着面向对象的血液。从类成员的构成到类之间的继承关系再到虚函数,到处都体现着面向对象封装、继承和多态的三大特征。6.3.1 用类机制实现封装考虑这样一个现实问题,学校中有多个老师,每个老师的名字、年龄等属性都各不相同,但这些老师都会备课上课,具有相同的行为。那么,我...
2015-04-10 12:56:00
143
转载 你好,C++(35)类是如何藏私房钱的?6.2.4 拷贝构造函数
6.2.6 类成员的访问控制类成员包括类的成员变量和成员函数,它们分别用来描述类的属性和行为。而类成员的访问控制决定了哪些成员是公开的,可以被外界访问,也可以被自身访问;哪些成员是私有的,只能在类的内部访问,外界无法访问。就像一个人的钱包,只有他自己能动,别人是不能动的。又如同自己藏的私房钱也只有自己知道,对其他人而言,私房钱是完全隐藏的。大家可能会问,为什么要对类成员的访问加...
2015-04-01 14:45:00
106
转载 你好,C++(34)有一只叫做多利的羊 6.2.4 拷贝构造函数
6.2.4 拷贝构造函数在C++世界中,除了需要使用构造函数直接创建一个新的对象之外,有时还需要根据已经存在的某个对象创建它的一个副本,就像那只叫做多利的羊一样,我们希望根据一只羊创建出来另外一只一模一样的羊。例如:// 调用构造函数创建一个新对象shMotherSheep shMother;// 对shMother进行一些操作…// 利用shMother对象创...
2015-03-25 12:24:00
165
转载 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数...
6.2.2 使用类创建对象完成某个类的声明并且定义其成员函数之后,这个类就可以使用了。一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中的各种实体。比如前面完成了Teacher类的声明和定义,就可以用它来创建一个Teacher类的对象,用它来表示某一位具体的老师。创建类的对象的方式跟定义变量的方式相似,只需要将定义完成的类...
2015-03-18 12:03:00
182
转载 你好,C++(32) 类是对现实世界的抽象和描述 6.2.1 类的声明和定义
6.2 类:当C++爱上面向对象类这个概念是面向对象思想在C++中的具体体现:它既是封装的结果,同时也是继承和多态的载体。因此,要想学习C++中的面向对象程序设计,也就必须从“类”开始。6.2.1 类的声明和定义面向对象思想把现实世界中的所有事物都看成是对象,而类是对所有相同类型对象的抽象,是对它们总体的一个描述。比如,学校有很多老师,张老师、李老师、王老师,虽然每个老师...
2015-03-12 13:09:00
257
转载 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计
第6章当C++爱上面向对象很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊?C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语言是在C语言的基础上添加了新的内容而发展形成的。如果其中一个加号代表C++在C语言的基础上增加了模板、异常处理等现代程序设计语言的新特性的话,那么另外一个加号则代表C++在C语言的基础...
2015-02-06 12:59:00
226
转载 你好,C++(30)“大事化小,小事化了”5.4.3 工资程序成长记:函数
5.4.3 工资程序成长记:函数自从上次小陈“程序员”的工资程序得到老板的夸奖,口头许诺给他涨工资以后,老板再也没有找过他,涨工资的事自然也就没有下文了。这天,老板又突然召他去办公室。这下可把小陈高兴坏了,心想盼星星盼月亮终于盼来涨工资这一天了。于是赶紧到了老板的办公室。可他刚进门就发现情况有点不对,只见老板阴沉着脸坐在他那张硕大的老板椅上,满头大汗,手指还在不停地敲击着键盘输入着什...
2015-01-26 12:21:00
92
转载 你好,C++(29)脚踏两只船的函数不是好函数 5.4 函数设计的基本规则
5.4 函数设计的基本规则函数是C++程序的基本功能单元,就像一块块砖头可以有规则地垒成一座房子,而一个个函数也可以有规则地组织成一个程序。我们在大量使用他人设计好的函数的同时,也在设计大量的函数供自己或他人使用。一个设计良好的函数,概念清晰职责明确,使用起来将非常容易,可以很大程度地提高我们的开发效率。反过来,一个设计糟糕的函数,概念不清职责不明,不仅难以使用,有时甚至会导致严重...
2015-01-20 15:15:00
122
转载 你好,C++(28)用空间换时间 5.2 内联函数 5.3 重载函数
5.2 内联函数通过5.1节的学习我们知道,系统为了实现函数调用会做很多额外的幕后工作:保存现场、对参数进行赋值、恢复现场等等。如果函数在程序内被多次调用,且其本身比较短小,可以很快执行完毕,那么,在完成这个函数调用的时候,系统花在完成这些幕后工作上的时间将远大于最核心的函数本身执行的时间,这就像好钢用在了刀背上,将极大地减低程序的性能。为了解决这个问题,C++提供了内联函数的机制...
2015-01-12 14:54:00
309
转载 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
5.1.5 函数的递归调用在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能。例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在PowerSum()函数中,又调用Power()函数和Add()函数来计算每个数的平方并将两个平方加和起来成为最终的结果。除此之外,在C++中还存在另外一种特殊的函数调用方式,那就是在一个函...
2015-01-04 15:02:00
1117
转载 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
5.1.3 函数参数的传递我们知道,函数是用来完成某个功能的相对独立的一段代码。函数在完成这个功能的时候,往往需要外部数据的支持,这时就需要在调用这个函数时向它传递所需要的数据它才能完成这个功能获得结果。例如,当调用一个加法函数时,需要向它传递两个数作为加数和被加数,然后在它内部才能对这两个数进行计算获得加和结果。在定义一个函数的时候,如果这个函数需要跟外部进行数据交换,就需要在函...
2014-12-22 15:01:00
156
转载 你好,C++(25)函数调用和它背后的故事5.1.2 函数调用机制
5.1.2 函数调用机制在前面的学习中,我们多次提到了“调用函数”的概念。所谓调用函数,就是将程序的执行控制权从调用者(某个函数)交给被调用的函数,同时通过参数向被调用的函数传递数据,然后程序进入被调用函数内部,执行函数定义中的代码获得结果数据,函数体代码执行完毕后再将控制权交回给调用者同时将结果数据通过返回值传递给调用者,作为整个函数调用表达式的值。简而言之,调用函数也就是执行函...
2014-12-17 13:32:00
151
转载 你好,C++(24)好大一个箱子!5.1.1 函数的声明和定义
第5章 用函数封装程序功能在完成功能强大的工资程序V1.0之后,我们信心倍增,开始向C++世界的更深远处探索。现在,我们可以用各种数据类型定义变量来表达问题中所涉及的各种数据;用操作符连接这些变量对其进行运算;用程序流程控制结构来控制对这些数据的复杂处理过程,最终实现对数据进行处理得到结果,而这就是程序了。但是,随着要处理的问题越来越复杂,程序的代码自然也就会越来越复杂。如果把所...
2014-12-08 14:52:00
104
转载 你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作...
4.4 从语句到程序了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的。要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述,还是逐层递进论述。定好结构后再按照结构的要求将词语和句子安排到合适的位置,这样才能写出一篇有意义的词句通顺的文章。编写程序就像写文章一样,也同样需要先根据需要处理的事务确定程序的流程控制结...
2014-12-01 13:32:00
221
转载 你好,C++(22) 排排坐,吃果果——4.3.3 for循环:某个范围内…每个都…
4.3.3 for循环:某个范围内…每个都…既然while语句和do…while…语句都已经可以满足我们表达循环现象的需要,那为什么C++还要专门提供for语句来表达循环现象呢?在现实世界中,常常有这样一类特殊的循环现象,例如:在公司100000个员工范围内,每个员工都增加10000元工资;在从1到100这个范围内,每个数字都累加到总和中。说这些是循环现象,是因为它们的...
2014-11-25 12:25:00
273
转载 你好,C++(21)只要天还没黑,就一直在工地干活-4.3.1 while循环:只要…就一直…...
4.3 循环控制语句在现实世界中,有这样一类现象:只要油箱中的当前油量小于油箱容量100升,就一直往油箱中加油;一直不断地为祖国辛勤工作,只要我还活着;公司100000位员工,每个人的工资都增加10000元;这些现象虽然各不相同,但它们都有一个共同的特点,那就是在某个条件(只要我还活着)下,或者某个范围(所有100000位员工)内,这些动作(辛勤工作、增加10000...
2014-11-20 13:07:00
103
转载 你好,C++(20).4.2.2 表达并列条件选择的switch语句:如果……如果……如果……...
4.2.2 表达并列条件选择的switch语句:如果……如果……如果……在现实世界中,还有这样一类特殊的条件选择:如果明天是晴天,我就穿T恤;如果明天是阴天,我就穿衬衣;如果明天是雨天,我就穿外套。之所以说这是条件选择,是因为它根据不同的情况执行了不同的动作;而之所以说它特殊,是因为这些不同情况(晴天、阴天、雨天)属于同一条件(天气情况)。只要是条件判断,我们就可以...
2014-11-17 13:22:00
811
转载 你好,C++(19)“老师,我这次四级考试过了没有?”——4.2 条件选择语句
4.2 条件选择语句“老师,我这次四级考试过了没有?”如果老师被问到这个问题,他会如何回答?是的,他会根据不同的条件选择不同的回答:如果考试成绩大于等于60,那就回答:“恭喜你,你通过了这次考试”;否则那就回答“很遗憾,你没有通过这次考试”。这就是现实世界中的条件选择——根据不同的条件做出不同的动作。那么,在C++程序中,我们又该如何表达这种条件选择呢?4.2....
2014-11-14 12:42:00
226
转载 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
4.1.6 操作符之间的优先顺序在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符。比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤)是否小于100块钱(因为兜里只有这么多钱),同时还要判断这个西瓜是否有坏掉的地方。要表达这个复杂的条件判断,我们不得不把前面学过的算术操作符、关系操作符和逻辑操作符全都派上场:bo...
2014-11-10 13:38:00
144
转载 你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
4.1.4 关系操作符在C++中,除了需要用算术操作符对数据进行加减乘除的算术操作之外,我们有时候还需要对数据之间的关系进行操作,也就是对两个数据进行大小比较,得出它们之间的大小关系。在现实世界中,这种大小关系的比较是非常常见的。例如,这家摊位上的西红柿5元一斤,而另外一家相同的西红柿却只卖3元一斤,5和3一比较,就知道第二家的西红柿更便宜了。我们说,程序是用来抽象和描述现实世界的...
2014-11-06 15:18:00
204
转载 你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
第4章 将语句编织成程序学过C++中的各种数据类型, 就知道如何使用各种数据类型定义变量来描述现实世界中的各种事物了。现在,我们可以将一个工资统计程序大致写成下面这个样子:// 工资统计程序int main(){ // 表示员工个数的常量NUM const int NUM = 100000; // 保存所有工资的数组 ...
2014-11-03 13:05:00
103
转载 你好,C++(15)四两拨千斤——3.9 指向内存位置的指针
3.9 指向内存位置的指针一天,两个变量在街上遇到了:“老兄,你家住哪儿啊?改天找你玩儿去。”“哦,我家在静态存储区的0x0049A024号,你家呢?”“我家在动态存储区的0x0022FF0C号。有空来玩儿啊。”在前面的章节中,我们学会了用int等数值数据类型表达各种数字数据,用char等字符数据类型表达文字数据,我们甚至还可以用结构体将多个基本数据类型组合形成新的...
2014-10-27 13:32:00
936
转载 你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物...
3.8 用结构体类型描述复杂的事物利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物。比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName变量表示人的姓名。然而,现实世界是复杂的,仅仅使用基本数据类型是不足以描述这个复杂的现实世界的。例如,我们无法使用某个基本数据类型来描述人这个复杂事物,因为他不仅有姓名,还有身高、年龄和性...
2014-10-19 14:01:00
192
转载 你好,C++(13)这道单选题的答案是A、B、C还是D?3.7 枚举类型
3.7 枚举类型除了之前我们介绍的数值数据和文字数据之外,在现实世界中,常常还会遇到这样一类数据:一道单选题的答案只能是A、B、C、D四个选项中的某一个;红绿灯的颜色只能是红色,绿色和黄色中的某一种;一个人的性别只能是男性或者女性。这种数据都只有有限的几种可能值,其值也只能是这个范围内的某一个。为了抽象和表达这种特殊数据,C++提供了枚举机制。使用C++的枚举机制,我们可以通过...
2014-10-08 09:58:00
264
转载 你好,C++(12)如何管理多个类型相同性质相同的数据?3.6 数组
3.6 数组学过前面的基本数据类型之后,我们现在可以定义单个变量来表示单个的数据。例如,我们可以用int类型定义变量来表示公交车的216路;可以用float类型定义变量来表示西红柿3.5元一斤。但是,除了单个孤立的数据之外,现实世界中还有一类批量数据。例如,一个公司所有员工的工资,这些数据的数据类型相同(都是int类型),性质相同(都表示员工的工资),数量很多(成千上万员工的工资)...
2014-09-29 16:44:00
298
转载 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)...
3.5.2 字符串类型使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的。很自然地,一种最简单直接的方法就是利用数组(一种数据组织管理方式,它将多个相同类型的数据元素组织起来,形成一个数据序列以便于访问。更多可以参考后文3.6小节对数组的介绍)来保存一个字符串中的各个字符,最后用一个特殊字符‘...
2014-09-25 14:19:00
132
转载 你好,C++(10)这次的C++考试你过了没有?C++中表示逻辑判断的布尔数据类型...
3.4 布尔类型在日常生活中,我们除了需要使用int类型的变量表示216路公交车;需要使用float类型的变量表示西红柿3.5元一斤,有时候还需要表示一种数据,那就是逻辑状态:“这次的C++考试你过了没有?”“他到底爱不爱我?”这里的“过了没有”以及“爱不爱”都是表示一种逻辑判断。与之前我们用数值数据类型表示的公交车线路以及西红柿价格可以有多种取值不同,这种逻辑判断状态...
2014-09-22 13:32:00
133
转载 你好,C++(9)坐216路公交车去买3.5元一斤的西红柿——C++中如何表达各种数值数据 3.3 数值数据类型...
3.3 数值数据类型从每天早上睁开眼睛的那一刻开始,我们几乎每时每刻都在与数字打交道:从闹钟上的6点30分,到上班坐的216路公共汽车;从新闻中说的房价跌到了100元每平米到回家买菜时的西红柿3.5元一斤。我们生活在一个充满数字的世界。程序是对现实世界的描述与表达,自然也会有很多数字需要表达。为了做到这一点,C++提供了丰富多样的数值数据类型,从整数到小数、从单精度浮点数到双精度浮...
2014-09-18 12:30:00
139
转载 你好,C++(8)如何表达那些始终保持不变的数据量?3.2.2 常量
3.2.2 常量与变量可以用在程序中表达那些可能会发生变化的数据量相对应地,在C++中,我们用常量来表达那些始终保持不变的数据量。简单来讲,就是程序中直接使用的数值、字符、字符串以及const关键字修饰的常变量等。大多数时候,常量只需要被读取一次,所以它没有名字,无须定义而可以直接使用。又因为其数据只能读取,不能修改,所以通常用来给一个变量赋值或者直接参与运算。例如:// ...
2014-09-16 08:04:00
358
转载 你好,C++(7)第三部分 C++世界众生相 3.2.1 变量的定义与初始化
第3部分C++世界众生相在听过了HelloWorld.exe的自我介绍,完成了与C++世界的第一次亲密接触后,大家是不是都急不可待地想要一试身手,开始编写C++程序了呢?程序的两大任务是描述数据和处理数据。那么,接下来我们将面临的第一个问题就是:如何在C++中描述数据?3.1 C++中的数据类型编程就是使用程序设计语言来描述...
2014-09-12 08:38:00
126
转载 你好,C++(6)2.3 C++兵器谱
2.3 C++兵器谱正所谓“工欲善其事,必先利其器”,而要想做好C++程序设计,自然也离不开几件像样的兵器。下面我们就来看看C++兵器谱上有哪些神兵利器值得我们学习掌握。排在兵器谱上首要位置的就是C++集成开发环境。所谓的集成开发环境(Integrated Development Environment,IDE),就是一套用于开发C++程序的软件集合,一般包括代码编辑器、编译器、调...
2014-09-09 08:01:00
125
转载 你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
2.2 基本输入/输出流听过HelloWorld.exe的自我介绍之后,大家已经知道了一个C++程序的任务就是描述数据和处理数据。这两大任务的对象都是数据,可现在的问题是,数据不可能无中生有地产生,C++程序也不可能凭空创造出来数据。那么,C++程序中的数据又从何而来呢?在现实世界中,国与国之间的交流是通过外交官来完成的。在C++世界中,也有负责应用程序跟外界进行数据交流的外交...
2014-09-04 07:53:00
1305
转载 你好,C++(4)2.1.3 我的父亲母亲:编译器和链接器 2.1.4 C++程序执行背后的故事...
2.1.3 我的父亲母亲:编译器和链接器从表面上看,我是由Visual Studio创建的,而实际上,真正负责编译源代码创建生成可执行程序HelloWorld.exe的却是Visual Studio中集成的C++编译器cl.exe和链接器link.exe。他们二老,才是我的亲生爹妈。为了便于人们的编写、阅读和维护,我们的源文件是使用C++这种人们可以理解的高级程序设计语言编写的...
2014-09-01 07:56:00
76
转载 你好,C++(3)2.1 一个C++程序的自白
第2部分 与C++第一次亲密接触在浏览了C++“三分天下”的世界版图之后,便对C++有了基本的了解,算是一只脚跨入了C++世界的大门。那么,怎样将我们的另外一只脚也跨入C++世界的大门呢?是该即刻开始编写C++程序?还是……正在我们犹豫的时候,便看到前面有一个人被一群满头问号的C++初学者围在当中。我们赶紧挤进去一看,噢,原来是一个C++程序正做自我介绍呢。2.1 一个C+...
2014-08-29 08:03:00
252
转载 你好,C++(1)C++是什么?C++的“前世今生”
The world is built on C++.——Herb Sutterthe chairman of the ISO C++ standards committee and chief native languages architect at...
2014-08-20 19:10:00
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人