秋夜雨巷

操作系统

操作系统的定义 操作系统是一种管理计算机系统资源、控制程序执行、改善人机界面和为其他软件提供支持的系统软件。 操作系统的发展 1、单用户微机操作系统:是指早期的微型计算机上运行的操作系统每次只允许一个用户使用计算机。 2、网络操作系统:为计算机网络配置的操作系统称为网络操作系统。网络操作系统把计算机网络中各台计算机系统有机地联合起来,为用户提供一种统一、经济而有效地使用各台计算机系统的方法,可使各台计算机系统相互间传送数据,实现各台计算机系统之间的通信以及网络中各种资源的共享。 3、分布式操作系统:为分布式计算机系统配置的操作系统称为分布式操作系统。分布式操作系统能使系统中若干台计算机相互协作完成一个共同的任务,或者说把一个计算问题可以分成若干个子计算,每个子计算可以在计算机系统中的各计算机上并行执行。 4、多机操作系统:为多处理器系统配置的操作系统称为多机操作系统。   5、嵌入式操作系统:是指运行在嵌入式系统中对各种部件、装置等资源进行统一协调、处理和控制的系统软件。(主要特点是微型化和实时性) 操作系统的类型…

秋夜雨巷

C++流类库(11)

C++的流类库由几个进行I/O操作的基础类和几个支持特定种类的源和目标的I/O操作的类组成。 流类库的基础类 ios类是isrream类和ostream类的虚基类,用来提供对流进行格式化I/O操作和错误处理的成员函数。用关键字virtual可将公共基类说明为虚基类,虚基类的定义很难处理,这就是为什么最初的C++语言没有能支持多重继承的原因。 ios类公有派生的istream和ostream两个类分别提供对流进行提取操作和插入操作的成员函数,而iostream类通过组合istream类和ostream类来支持对一个流进行双向(也就是输入和输出)操作,它并没有提供新的成员函数。 C++流类库预定义了4个流,它们是cin、cout、cerr、clog。事实上,可以将cin视为类istream的一个对象,而将cout视为类ostream的对象。 ios_base类简介 ios_base类派生ios类,ios类又是istream类和ostream类的虚基类。 文件流 在C++里,文件操作是通过流来完成的。C++总共有输入文件流、输出文件流和输入输出文件流3种,并已将它们标准化。  …

秋夜雨巷

C++运算符重载(10)

编译器在默认情况下为每个类生成一个默认的赋值操作,用于同类的两个对象之间相互赋值。默认的含义是逐个为成员赋值,即将一个对象的成员的值赋给另一个对象相应的成员,这种赋值方式对于有些类可能是不正确的。 运算符重载形式有两种,重载为类的成员函数和重载为类的友元函数。 C++的关键字“operator”和运算符一起使用就表示一个运算符函数。例如“operator +”表示重载“+”运算符。 运算符实质 C++是由函数组成的,在C++内部,任何运算都是通过函数来实现的。因为任何运算都是通过函数来实现的,所以运算符重载其实就是函数重载,要重载某个运算符,只要重载相应的函数就可以了。与以往稍有不同的是,需要使用新的关键字“operator”,它和C++的一个运算符连用,构成一个运算符函数名,例如“operator+”.通过这种构成方法就可以像重载普通函数那样重载运算符函数operator+()。由于C++已经为各种基本数据类型定义了该运算函数,所以只需要为自己定义的类型重载operator+()就可以了。 C++的运算符大部分都可以重载,不能重载的只有. 、:: 、* 和…

秋夜雨巷

C++虚函数(09)

一旦基类定义了虚函数,该基类的派生类中的同名函数也自动称为虚函数。 虚函数只能是类中的一个成员函数,但不能是静态成员,关键字virtual用于类中该函数的声明中。 关键字virtual指示C++编译器对调用虚函数进行动态联编。这种多态性是程序运行到需要的语句处才动态确定的,所以称为运行时的多态性。不过,使用虚函数并不一定产生多态性,也不一定使用动态联编。例如,在调用中对虚函数使用成员名限定,可以强制C++对该函数的调用使用静态联编。 产生运行时的多态性有如下3个前提:   (1)类之间的继承关系满足赋值兼容性规则。 (2)改写了同名函数。   (3)根据赋值兼容性规则使用指针(或引用)。 由于动态联编是在运行时进行的,相对于静态联编,它的运行效率比较低,但它可以使程序员对程序进行高度抽象,设计出可扩充性好的程序。…

秋夜雨巷

C++向量(08)

在数组生存期内,数组的大小是不会改变的。向量是一维数组的类版本,它与数组相似,其中的元素项总是连续存储的,但它和数组不同的是:向量中存储元素的多少可以在运行中根据需要动态地增长或缩小。向量是类模板,具有成员函数。 向量(vector)类模板定义在头文件vector中,它提供4种构造函数,用来定义由各元素组成的列表。用length表示长度,数据类型用type表示,对象名为name。 vector :: iterator泛型指针名; 访问向量容量信息的方法   (1)size():返回当前向量中已经存放的对象的个数   (2)max_size():返回向量可以容纳最多对象的个数,一般是操作系统的寻址空间所需容纳的对象的个数。这个参数不是用户指定的,它取决于硬件结构。…

秋夜雨巷

C++继承(07)

继承 通过特殊化已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类”。另一方面,从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”。基类和派生类又可以分别叫做“父类”和“子类”,有时也称为“一般类”和“特殊类”。 当从现有的类中派生出新类时,派生类可以有以下几种变化: (1)增加新的成员(数据成员或成员函数) (2)重新定义已有的成员函数 (3)改变基类成员的访问权限   C++派生类使用两种基本的面向对象技术:第一种称为性质约束,即对基类的性质加以限制;第二种称为性质扩展,即增加派生类的性质。   C++中有两种继承:单一继承和多重继承。对于单一继承,派生类只能有一个基类;对于多重继承,派生类可以有多个基类。(这点不同于java)…

秋夜雨巷

C++const使用(06)

可以在类中使用const关键字定义数据成员和成员函数或修饰一个对象。一个const对象只能访问const成员函数,否则将产生编译错误。 常量成员 常量成员包括常量数据成员、静态常数据成员和常引用。静态常数据成员仍保留静态成员特征,需要在类外初始化。常数据成员和常引用只能通过初始化列表来获得初值。 常引用作为函数参数 使用引用作为参数,传送的是地址。但有时仅希望将参数的值提供给函数使用,并不允许函数改变对象的值,这时可以使用常引用作为参数。 常对象 在对象名前使用const声明常量对象,但声明时必须同时进行初始化,而且不能被更新。定义的语法如下:   类名 const…

秋夜雨巷

C++类与对象(05)

类是具有惟一标识符的实体;在类中声明的任何成员不能使用extern、auto和register关键字进行修饰;类中声明的变量属于该类,在某些情况下,变量也可以被该类的不同实例所共享。 访问权限用于控制对象的某个成员在程序中的可访问性,如果没有使用关键字,则所有成员默认声明为private权限。 定义成员函数 类中声明的成员函数用来对数据成员进行操作,还必须在程序中实现这些成员函数。 定义成员函数的一般形式如下:   返回类型 类名::成员函数名(参数列表) {  成员函数的函数体//内部实现…

秋夜雨巷

C++函数重载和函数模板(04)

函数重载 函数重载可以使一个函数名具有多种功能,即具有“多种形态”,这种特性称为多态性。 C++的多态性又被直观地称为“一个名字,多个函数”。源代码只指明函数调用,而不说明具体调用哪个函数。编译器的这种连接方式称为动态联编或迟后联编。在动态联编中,直到程序运行才能确定调用哪个函数(动态联编需要虚函数的支持)。如果编译器在编译时,能根据源代码调用固定的函数标识符,并用物理地址代替它们,这就称为静态联编或先期联编。静态联编是在程序被编译时进行的。 函数模板 1.引入函数模版 由于函数在设计时没有使用实际的类型,而是使用虚拟的类型参数,故其灵活性得到加强。当用实际的类型来实例化这种函数时,就好像按照模版来制造新的函数一样,所以称这种函数为函数模板。将函数模版与某个具体数据类型连用,就产生了模板函数,又称这个过程为函数模板实例化,这种形式就是类型参数化。 template 返回类型 函数名(参数列表) {…