随笔分类 -  C++复习

摘要:标准IO提供的三种类型的缓冲模式: (1)按块缓存:在填满缓冲区后才进行实际的设备读写操作 (2)按行缓存:指在接收到换行符('\n’)之前,数据都是先缓存在缓冲区的 (3)不缓存:允许你直接读写设备上的数据 fflush 函数可以强制刷新缓冲区。 setvbuf 函数用于指定一个数据流的缓存模式。 阅读全文
posted @ 2019-03-09 15:15 耐烦不急 阅读(717) 评论(0) 推荐(0) 编辑
摘要:test1.c: 重定向: 这里给大家补充一个课外知识点,由于标准输出和标准错误输出通帝都是直接打印到辱幕上,为了区分它们,我们可以使用Linux shel1的重定向功能: 重定向标准输入使用 < 重定向标准输出使用 > 重定向标准错误输出使用 2> 上述程序结果: 错误处理 错误指示器—ferro 阅读全文
posted @ 2019-03-09 14:33 耐烦不急 阅读(367) 评论(0) 推荐(0) 编辑
摘要:迭代器: 上一节我们的栗子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题。就是在漏历向量里的各个元素时,我们仍把它视为一个C++数组来对待。 刚好我们的向量容器允许使用下表操作符来访问它的各个元素:names[x]。但是如果想改用另一种不提供此方法访问的容器(比如栈),我们就 阅读全文
posted @ 2019-03-09 12:04 耐烦不急 阅读(348) 评论(0) 推荐(0) 编辑
摘要:渐渐地我们发觉编写的每一个程序都或多或少地需要存储一些数据,而C++在这方面只提供了几种最基本的方法。 你可以创建局部或全局变量来保存单个值,可以使用数组来保存多个值。 今天的概念:能容纳两个或更多个值的数据结构通常我们称为容器(container)。这么说来,数组是C++唯一直接支持的容器,但数组 阅读全文
posted @ 2019-03-09 11:58 耐烦不急 阅读(289) 评论(0) 推荐(0) 编辑
摘要:内联即inline,我们第一想到的是内联函数,引入内联函数的自的是为了解决程序中函数调用的效率问题。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但能否形成内联函数,需要看编译器对该函数定义的具体 阅读全文
posted @ 2019-03-09 11:33 耐烦不急 阅读(609) 评论(0) 推荐(0) 编辑
摘要:类模板与函数模板非常相似:同样是先由你编写一个类的模板,再由编译器在你第一次使用这个模板时生成实际代码。 构浩器的实现将是下面这样: 因为MyClass是一个类模板,所以不能只写出MyClass::MyClass(),编译器需要你在这里给出一种与MyClass(配合使用的数据类型,必须在尖括号里提供 阅读全文
posted @ 2019-03-08 22:27 耐烦不急 阅读(162) 评论(0) 推荐(0) 编辑
摘要:基本的模板语法: 到目前为止,我们已经介绍了两种C++程序设计范型,即: 按照面向过程式范型把程序划分成不同的函教 按照面向对象式范型把代码和数据组织成各种名样的类并建立类之间的继承关系。 在这一讲里,将给大家介绍另一种范型:泛型编程! 范型编程技术支持程序员创建函数和类的蓝图(即模板,templa 阅读全文
posted @ 2019-03-08 21:48 耐烦不急 阅读(325) 评论(0) 推荐(0) 编辑
摘要:前边我们已经开始创建由多个文件构成的项目,是时候再来讨论下更复杂的变量作用域了。 简单的理解,变量的作用域就是你可以在什么范围内访问这个变量。 地球人都知道,一个在任何函数之前定义的变量可以在任何一个函数里使用(这是一个全局变量),而在某个函教里定义的变量只能在那一个函数里使用(这是一个局部变量)。 阅读全文
posted @ 2019-03-08 18:38 耐烦不急 阅读(367) 评论(0) 推荐(0) 编辑
摘要:命名空间: 地球人都知道,创建的每一个类、函数和变量都只能在一定的区域内使用。而我们所知道最大的区域是全局作用域,最小的区域是一个代码块,例如: 随着程序变得越来越复杂,全局作用城里的东西会越来越多,尤其是在使用外部函数库时。 这可能会演变成一个问题:因为没有两样东西可以有同样的名字。 解决方案之一 阅读全文
posted @ 2019-03-08 18:20 耐烦不急 阅读(272) 评论(0) 推荐(0) 编辑
摘要:使用头文件: 在创建了头文件之后,只要把它的文件名用双引号括起来写在如下所示的指令里就可以导入它:#include "fishc.h" 如果没有给出路径名,编译器将到当前子目录以及当前开发环境中的其他逻辑子目录里去寻找头文件。为了消除这种猜测,在导入自己的头文件时可以使用相对路径。如果头文件与主程序 阅读全文
posted @ 2019-03-07 14:14 耐烦不急 阅读(276) 评论(0) 推荐(0) 编辑
摘要:接下来我们将重点讨论两个相互关联的简单概念: 第一个概念是模块化(modularization)一把程序划分成多个组成部分(即所谓的“模块”)一这是通过把程序代码分敬到多个文件里,等编译程序时再把那些文件重新组合在一起实现的。 第二个概念是命名空间(namespace)一这个概念相比起C语言是C++ 阅读全文
posted @ 2019-03-07 13:52 耐烦不急 阅读(386) 评论(0) 推荐(0) 编辑
摘要:这个话题就像古时候女人的惠脚布,又长又臭哈~·前面我们讲过,分配了一个内存块但忘记了释放它,这是一种严重的错误。这样的内存块将等到程序执行结束时才会被释放掉。 如果程序会运行很长时间(例如在服务器上,注意不是所有的操作系统都想windows一样每天都要重启哈)并且在不停地申请新内存块,忘记释放那些已 阅读全文
posted @ 2019-03-07 13:39 耐烦不急 阅读(270) 评论(0) 推荐(0) 编辑
摘要:大家还记得我们前阵子制造出一个苹果公司么?没错,这节课我们还继续对这家公司入手进行讲解!Example.cpp: 要点总结: 我们用传统的强制类型转换实现:把所需要的括针类型放在一对圆括号之间,然后写出将被强制转换的地址值。 注意不能既删除company,又删除tecCompany。 因为强制类型转 阅读全文
posted @ 2019-03-07 12:03 耐烦不急 阅读(507) 评论(0) 推荐(0) 编辑
摘要:地球人都知道,我们可以把一个对象赋值给一个类型与之相同的变量。 编译器将生成必要的代码把“源“对象各属性的值分gl别赋值给“目标“对象的对应成员。这种赋值行为称之为蚕位复制(bitwise coyp)。w这种行为在绝大多数场合都没有问题,但如果某些成员变量是指针的话,问题就来了:对象成员进行还位复制 阅读全文
posted @ 2019-03-07 10:56 耐烦不急 阅读(427) 评论(0) 推荐(0) 编辑
摘要:从函数或方法返回内存 动态内存的另一个常见用途是让函教申请并返回一个指向内存块的指针。掌握这个技巧很重要,尤其是在你打算使用由别人编写的库文件时。如果不知道这个技巧,就只能让函数返回一个简单的标量值,如整型、浮点型或字等型。换句话说,它既不能返回一个以上的值,也不能返回数组之类比较复杂的数据结构。可 阅读全文
posted @ 2019-03-05 10:36 耐烦不急 阅读(473) 评论(0) 推荐(0) 编辑
摘要:动态数组: 虽然,前边我们讲过的用new给基本类型和对象在运行时分配内存,但它们的已寸在编译时就已经确定下来 因为我们为之申请内存的数据类型在程序里有明确的定义,有明确的单位长度! 可是,总有些时候,必须要等到程序运行时才能确定需要申请多少内存,甚至还需要根据程序的运行情况追加申请更多的内存。从某种 阅读全文
posted @ 2019-03-04 22:38 耐烦不急 阅读(1393) 评论(0) 推荐(0) 编辑
摘要:到目前为止,以前章节的每一个示例程序在完成它的任务时所使用的内存空间都是固定不变的。这个固定不变的内存空间其不实是在编写程序时候就可以知道和确定(一般以变量的形式)。这些程序都不能再程序运行期间动态增加或减少内存空间。 你见过要求用户输入的文本必须不多不少包含多少个字符的程序吗?不可能吧?! 在很多 阅读全文
posted @ 2019-03-02 11:04 耐烦不急 阅读(203) 评论(0) 推荐(0) 编辑
摘要:assert函数: C语言和C++都有一个专为调试而准备的工具函数,就是 assert()函数。 这个函数是在C语言的 assert.h 库文件里定义的,所以包含到C++程序里我们用以下语句: assert()函数需要有一个参数,它将测试这个输入参数的真 or 假状态。 如果为真,Do nothin 阅读全文
posted @ 2019-02-28 14:24 耐烦不急 阅读(2672) 评论(0) 推荐(0) 编辑
摘要:让函数返回错误代码: 让程序能够自行处理潜在错误的办法之一是创建一些测试函数:专门测试某种条件并根据测试结果返回一个代码来表示当前函数的执行状态。 这种方式我们已经了然于心,但我们仍有进一步继续讨论的必要。 不知道大家还记不记得很久很久以前,我们一起写过的那个求阶乘的栗子:factorial.cpp 阅读全文
posted @ 2019-02-28 11:26 耐烦不急 阅读(184) 评论(0) 推荐(0) 编辑
摘要:1.标识符名称: 标识符名称包括函数名、常量名、变量名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能 够见名知义,有助于对程序功能的理解。规则如下: 所有宏定义、枚举常数和const常变量,用大写字母命名。 #define ARRAY_SIZE 24 复合词中每个单词的第一个字母大 阅读全文
posted @ 2019-02-28 10:55 耐烦不急 阅读(1662) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示