欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第二章 类与对象.ppt

    • 资源ID:50519219       资源大小:1.39MB        全文页数:74页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二章 类与对象.ppt

    第二章第二章 类与对象类与对象2.1.1 类的定义类的定义类(类(Class)具有相同或相近的性质和行为的事物集合。具有相同或相近的性质和行为的事物集合。是面向对象思想中的一个重要组成部分。是面向对象思想中的一个重要组成部分。如何在计算机中将如何在计算机中将“类类”表达出来?表达出来?在在C语言中,当定义结构体(语言中,当定义结构体(struct):):struct SAMPLE int member1,member2;var1;使用结构中的成员:使用结构中的成员:int var=var1.member1*var1.member2;22.1.1 类的定义类的定义32.1.1 类的定义类的定义语法语法class /声明(定义)数据成员声明(定义)数据成员 /声明成员函数声明成员函数;说明说明类的定义以关键字类的定义以关键字class开始开始,其后是其后是类名。类名。“”表示类数据成员和成员函数的声明表示类数据成员和成员函数的声明最终以分号结束最终以分号结束。42.1.1 类的定义类的定义class CCompanyStaff /声明(定义)成员变量声明(定义)成员变量 public:int m_iStaffNum;/工作编号工作编号 char m_cName20;/姓名姓名 float m_fRateOfAttend;/出勤率出勤率 float m_fBasicSal;/基本工资基本工资 /声明成员函数声明成员函数 void SetBasicSal(float sal);/设置基本工资设置基本工资;52.1.2 成员函数的实现成员函数的实现 成员函数成员函数成员函数决定对象的操作行为。成员函数决定对象的操作行为。它是程序算法的它是程序算法的实现部分实现部分。它也是对封装的数据进行操作的唯一途径。它也是对封装的数据进行操作的唯一途径。它有两种方式它有两种方式类定义外实现类定义外实现类定义内实现类定义内实现62.1.2 成员函数的实现成员函数的实现类定义外实现成员函数类定义外实现成员函数类内声明类内声明格式格式返回值类型返回值类型 成员函数名成员函数名(形式参数表)(形式参数表);类外实现类外实现返回值类型返回值类型 类名类名:成员函数名成员函数名(形式参数表)(形式参数表)函数体函数体 例例2.2 企业员工类的实现企业员工类的实现sclass2_2_companyStaff1.cpp 72.1.2 成员函数的实现成员函数的实现类定义内实现类定义内实现在类内声明和实现成员函数在类内声明和实现成员函数语法语法返回值类型返回值类型 成员函数名成员函数名(形式参数表)(形式参数表)函数体函数体sclass2_2_0_companyStaff.h 82.1.2 成员函数的实现成员函数的实现#include using namespace std class CCompanyStaff /声明(定义)成员变量声明(定义)成员变量 public:int m_iStaffNum;/工作编号工作编号 char m_cName20;/姓名姓名 float m_fRateOfAttend;/出勤率出勤率 float m_fBasicSal;/基本工资基本工资 /声明成员函数声明成员函数 void SetBasicSal(float sal);/设置基本工资设置基本工资;void CCompanyStaff:SetBasicSal(float sal)m_fBasicSal=sal;void main()CCompanyStaff staff;staff.SetBasicSal(100);cout“staff.m_fBasicSal=”staff.m_fBasicSal endl;92.1.2 成员函数的实现成员函数的实现对于对于C+语言的编程习惯:语言的编程习惯:将类的定义存放于将类的定义存放于“*.h”的头文件中,每个类的头文件中,每个类一个声明文件。一个声明文件。将类的成员函数实现定义存放于将类的成员函数实现定义存放于“*.cpp”文件文件中,与相应的声明文件一一对应中,与相应的声明文件一一对应例:例:smain2-4.cppsmain2-4.h102.1.2 成员函数的实现成员函数的实现实例:实例:编写程序:完成学生信息的输入、输出操作,编写程序:完成学生信息的输入、输出操作,学生信息包括:学号,姓名。学生信息包括:学号,姓名。student.cpp112.1.3 类成员的访问权限类成员的访问权限封装性封装性直观理解,类将属于它的数据(数据成员)和直观理解,类将属于它的数据(数据成员)和针对数据的操作(成员函数)包裹在一起就是针对数据的操作(成员函数)包裹在一起就是一种封装。一种封装。通过设置数据成员和成员函数的通过设置数据成员和成员函数的访问权限访问权限,限,限定类成员能否在定类成员能否在类外类外访问。访问。目的:保护类(对象)的实现。目的:保护类(对象)的实现。封装成类的好处封装成类的好处可以实现可以实现数据隐藏数据隐藏。122.1.3 类成员的访问权限类成员的访问权限类内、类外类内、类外类内:类的定义和成员函数实现体内类内:类的定义和成员函数实现体内类外:除类内以外的范围类外:除类内以外的范围访问权限关键字访问权限关键字public(公有的):(公有的):公开的,可见的公开的,可见的。类成员。类成员(数据成员与成员函数)可以在类内、外使用。(数据成员与成员函数)可以在类内、外使用。private (私有的):(私有的):不可见的不可见的。成员只能在类。成员只能在类内使用。内使用。protected (保护的):受到保护的。成员也只(保护的):受到保护的。成员也只能在类内或其派生类内使用。(以后再讨论)能在类内或其派生类内使用。(以后再讨论)132.1.3 类成员的访问权限类成员的访问权限说明说明C+类中的成员(数据成员、成员函数)都应该指明访类中的成员(数据成员、成员函数)都应该指明访问权限。问权限。C+类定义中的类定义中的缺省属性为私有缺省属性为私有的(的(private)。)。类成员可在类内直接访问,类成员可在类内直接访问,类的成员函数内类的成员函数内可以访问类可以访问类的所有成员,没有任何限制的所有成员,没有任何限制访问权限只限定在类外访问类成员的权限访问权限只限定在类外访问类成员的权限每个权限关键字的作用范围:从一个关键字开始,直到每个权限关键字的作用范围:从一个关键字开始,直到另外一个关键字结束(或类结束了)另外一个关键字结束(或类结束了)封装所实现的数据隐藏是封装所实现的数据隐藏是面向对象程序设计的一个面向对象程序设计的一个关键关键特性特性隐藏一个类的数据从而使其他类无法访问。隐藏一个类的数据从而使其他类无法访问。142.1.3 类成员的访问权限类成员的访问权限#include using namespace std class CCompanyStaff private:int m_iStaffNum;/工作编号工作编号 char m_cName20;/姓名姓名 float m_fRateOfAttend;/出勤率出勤率 float m_fBasicSal;/基本工资基本工资 public:void SetBasicSal(float sal);/设置基本工资设置基本工资;void CCompanyStaff:SetBasicSal(float sal)m_fBasicSal=sal;void main()CCompanyStaff staff;staff.m_iStaffNum=100;/staff.SetBasicSal(600);/cout“staff.m_fBasicSal=”staff.m_fBasicSal endl;152.1.3 类成员的访问权限类成员的访问权限说明说明CCompanyStaff staff;staff.SetBasicSal(600);/合法的,因为合法的,因为SetBasicSal是一个公开是一个公开(public)的方法。)的方法。staff.m_iStaffNum=100;/非法的,因为非法的,因为m_iStaffNum是一个私是一个私有(有(private)的变量)的变量。void CCompanyStaff:SetBasicSal(float sal)m_fBasicSal=sal;/SetBasicSal是对象的成员,所以它的定义是对象的成员,所以它的定义中可以访问中可以访问m_fBasicSal私有变量私有变量。162.1.3 类成员的访问权限类成员的访问权限访问权限举例:访问权限举例:sclass2_1_demo.cpp 建议建议定义访问权限时的顺序,涉及一个编程习惯:定义访问权限时的顺序,涉及一个编程习惯:“以数据为中心以数据为中心”“以行为为中心以行为为中心”最好把一个类的数据成员都声明为私有的访问权限。最好把一个类的数据成员都声明为私有的访问权限。一是一是信息隐藏信息隐藏,即实现封装,把类的内部实现和外,即实现封装,把类的内部实现和外部表现分开,让使用者无需了解类的实现细节;部表现分开,让使用者无需了解类的实现细节;二是二是数据保护数据保护,将类的重要信息保护起来,以免被,将类的重要信息保护起来,以免被其他程序不恰当地修改。其他程序不恰当地修改。17课堂练习课堂练习请问以下程序中哪些语句有问题:请问以下程序中哪些语句有问题:class2_2_1_companyStaff.cpp182.2.1 类对象类对象 对象(对象(object):类的实例,即类的性质(变量)具体化之后成类的实例,即类的性质(变量)具体化之后成为为 对象。对象。类与对象的联系类与对象的联系一个对象是类的一种特殊情况。一个对象是类的一种特殊情况。一个类可以实例化很多的对象,一个类可以实例化很多的对象,一个对象属于一个类。一个对象属于一个类。它们是一对多的关系。它们是一对多的关系。192.2.2 对象成员的访问对象成员的访问 普通对象普通对象声明声明 ;访问访问./访问公有数据成员访问公有数据成员.()/访问公有成员函数访问公有成员函数 例例CCompanyStaff staff1;staff1.staff.m_iStafNum=12345;staff1.SetBasicSal(4000.0);202.2.3 对象成员的访问对象成员的访问例例2.8 在员工管理系统中,建立两个对象分别在员工管理系统中,建立两个对象分别用两种方式去访问类成员。用两种方式去访问类成员。sclass2_8_companyStaff.h smain2_8.cpp 212.2.3 对象成员的访问对象成员的访问对象数组对象数组声明声明 int;访问访问下标下标./访问公有数据成员访问公有数据成员下标下标.()/访问公有成员函数访问公有成员函数例例CCompanyStaff astaff 5;astaff1.iStafNum=12345;astaff1.SetBasicSal(4000.0);222.2.3 对象成员的访问对象成员的访问 例例2.9对象数组应用举例对象数组应用举例sclass2_13_fruit.h smain2_13.cpp CFruit d4;/创建一个对象数组创建一个对象数组232.2.3 对象成员的访问对象成员的访问对象指针对象指针声明声明 *;访问访问-/访问公有数据成员访问公有数据成员-()/访问公访问公有成员函数有成员函数例例CCompanyStaff *pstaff;pstaff=new CCompanyStaff(LiuMei,0.95,3000.0);pstaff-GetName()242.2.3 对象成员的访问对象成员的访问例例2.10 对象指针举例。对象指针举例。sclass2_9_objPointer.h smain2_9.cpp CPointerExam*pointer;/声明声明pointer=&obj;/初始化初始化pointer-SetNum(2);对象指针在使用之前一定要初始化,为其动态对象指针在使用之前一定要初始化,为其动态分配存储空间;分配存储空间;使用完毕必须释放该对象指针所使用完毕必须释放该对象指针所代表的代表的资源。资源。252.2.4 构造函数构造函数对象存储空间对象存储空间需要向操作系统需要向操作系统申请一定的内存空间申请一定的内存空间用于存放用于存放新建的对象。新建的对象。对象分配存储空间对象分配存储空间和两种方式。和两种方式。静态分配静态分配可以将对象或静态成员存放在栈中或静态存储区可以将对象或静态成员存放在栈中或静态存储区域中。域中。动态分配动态分配动态内存分配是指在堆(也称自由内存)中分配动态内存分配是指在堆(也称自由内存)中分配存储单元,即为对象动态从堆中分配内存。存储单元,即为对象动态从堆中分配内存。使用操作符使用操作符new分配内存空间;分配内存空间;使用操作符使用操作符delete释放内存空间。释放内存空间。262.2.4 构造函数构造函数对象初始化对象初始化定义了一个特殊的方法(函数),定义了一个特殊的方法(函数),专门用于对专门用于对象生成时的初始化。象生成时的初始化。构造函数(构造函数(constructor)对象撤销对象撤销定义了一个特殊的方法(函数),定义了一个特殊的方法(函数),专门用于对专门用于对象消亡时的撤销操作。象消亡时的撤销操作。析构函数(析构函数(destructor)272.2.4 构造函数构造函数构造函数构造函数C+规定,每个类必须有一个构造函数,没有构造函数,规定,每个类必须有一个构造函数,没有构造函数,就不能创建任何对象就不能创建任何对象C+通过类设置一个专门的通过类设置一个专门的成员函数成员函数来负责类中来负责类中对象的初始化。对象的初始化。作用作用在对象被创建时利用特定的值构造对象,将对象初始化到一个在对象被创建时利用特定的值构造对象,将对象初始化到一个特定的状态。特定的状态。特性特性函数名与类名称相同,没有返回值。它在对象生成之时函数名与类名称相同,没有返回值。它在对象生成之时自动执自动执行行。格式格式public:类名(类名();282.2.4 构造函数构造函数构造函数可以由程序设计人员自己编写。也可以由系统构造函数可以由程序设计人员自己编写。也可以由系统提供(没有编写构造函数)。提供(没有编写构造函数)。初始化机制初始化机制根据对象后的参数与构造函数的参数一致性,自动调用根据对象后的参数与构造函数的参数一致性,自动调用相应的构造函数。相应的构造函数。如果对象后没有参数,则调用系统缺省构造函数(只有如果对象后没有参数,则调用系统缺省构造函数(只有在没有定义构造函数的情况下),否则调用自己定义的在没有定义构造函数的情况下),否则调用自己定义的不带参数构造函数。不带参数构造函数。声明对象数组时,后面不能接参数。即系统自动调用且声明对象数组时,后面不能接参数。即系统自动调用且必须调用已定义的不带参数的构造函数或系统默认构造必须调用已定义的不带参数的构造函数或系统默认构造函数。函数。声明对象指针不自动调用构造函数。声明对象指针不自动调用构造函数。例:例:sclass2_4_companyStaff.h smain2_4.cpp292.2.4 构造函数构造函数函数的重载函数的重载定义定义函数名相同,函数的参数类型、参数个数不同函数名相同,函数的参数类型、参数个数不同的函数,称为函数的重载。的函数,称为函数的重载。例例int fun(int,int)int fun(in)int fun(float)注意注意int fun(int)与与void fun(int)不是函数的重载不是函数的重载 302.2.4 构造函数构造函数重载构造函数重载构造函数定义定义构造函数名相同而参数特征不同的构造函数,称为重载构造函数名相同而参数特征不同的构造函数,称为重载构造函数。构造函数。调用机制调用机制函数的调用是按参数的一致性原则,自动选择调用。函数的调用是按参数的一致性原则,自动选择调用。例例2.5 在员工管理系统中,创建一个对象时,有时只初在员工管理系统中,创建一个对象时,有时只初时化员工姓名,有时需一次性地给对象的姓名、出勤率、时化员工姓名,有时需一次性地给对象的姓名、出勤率、基本工资等几个数据成员都赋初值,这就需要重载构造基本工资等几个数据成员都赋初值,这就需要重载构造函数。函数。sclass2_5_companyStaff.hsmain2_5.cpp 312.2.4 构造函数构造函数例例1Class CDemo public:void setI(int a)i=a;private:int i,j;void main()CDemo demo1;CDemo demo210;问:程序运行时会调用构造函数吗?答:会调用系统缺省的构造函数。322.2.4 构造函数构造函数例例2Class CDemopublic:CDemo(int a)i=a;CDemo(int a,int b)i=a;j=b void setI(int a)i=a;private:int i,j;问1:main函数中,哪些对象声明是正确的,如正确则调用个构造函数,为什么?答答1:demo1、demo2正确正确如果自定义了构造函数,如果自定义了构造函数,则系统不会生成缺省构造则系统不会生成缺省构造函数函数void main()CDemo demo1(2);CDemo demo2(1,2);CDemo demo3;CDemo demo410;CDemo demo510(2);问2:如果要使demo3、demo4声明正确,如何解决?答答2:定义构造函数:定义构造函数CDemo()i=0;j=0;332.2.4 构造函数构造函数缺省参数缺省参数定义定义在参数列表中给定参数的值,在调用时如果没有给定参在参数列表中给定参数的值,在调用时如果没有给定参数值,则取缺省参数传入函数。数值,则取缺省参数传入函数。例例若定义:若定义:void fun(int i=1)couti m_cName,cName);CCompanyStaff(char cName,CCompanyStaff*const this)strcpy(this-m_cName,cName);412.2.7 静态变量静态变量静态静态Static关键字关键字静态变量(数据成员)静态变量(数据成员)声明声明static 初始化初始化:=初始值初始值;注:注:静态数据成员在使用前也要初始化,初始化必须在静态数据成员在使用前也要初始化,初始化必须在类外进行,不能在构造函数或其它函数中进行类外进行,不能在构造函数或其它函数中进行访问语法格式访问语法格式:.422.2.7 静态变量静态变量静态变量静态变量静态数据成员属于这个类,不再隶属于各个对静态数据成员属于这个类,不再隶属于各个对象。象。class CCompanyStaff public:void SetBasicSal(float sal);static int m_iStaffNum;/END CCompanyStaff:m_iStaffNum=1000;432.2.7 静态变量静态变量静态变量静态变量特点特点类的静态成员拥有一块类的静态成员拥有一块单独的存储单独的存储区。区。该类的所有该类的所有对象都共享对象都共享这块静态存储空间这块静态存储空间这就为对象提供了一个相互通信的方法。这就为对象提供了一个相互通信的方法。它它属于类属于类而不属于对象。而不属于对象。实例:实例:smain2_14.cpp442.2.7 静态变量静态变量静态成员函数静态成员函数声明格式声明格式static(参数表)(参数表)可以通过可以通过类名和对象名类名和对象名来调用来调用。:().()例例2.15静态成员函数举例。静态成员函数举例。smain2_15.cpp 特性特性只要类存在,静态成员函数就可以使用。只要类存在,静态成员函数就可以使用。static成员函数内只能使用成员函数内只能使用static数据成员数据成员45提问提问程序运行的结果?程序运行的结果?#include using namespace std;class CDemopublic:CDemo()i=0;couti1i=i;couti2endl;CDemo()couti3endl;private:int i;int main()CDemo d1;CDemo d2(1);return 0;答:答:0112130346提问提问指出程序中错误指出程序中错误#include using namespace std;class CDemopublic:static void Fun()j=i;private:static int i;int j;int main()return 0;答:答:1.int CDemo:i=0;2.静态函数不能使静态函数不能使用非静态数据成员用非静态数据成员472.2.8 友元关系友元关系友元关系友元关系C+提供了友元(提供了友元(friend)来解决由封装性带来)来解决由封装性带来的问题。的问题。友元类友元类friend关键字修饰类关键字修饰类友元函数友元函数friend关键字修饰函数关键字修饰函数482.2.8 友元关系友元关系友元函数友元函数定义定义若在若在A类中声明友元函数类中声明友元函数Fun,则在,则在Fun为类为类A的友的友元函数,元函数,可直接访问类可直接访问类A中所有成员中所有成员。Class A friend Fun();实例实例Sclass2-16.cpp声明声明不属于任何类不属于任何类,因此可以放在类说明的任何位置,因此可以放在类说明的任何位置调用调用可以像普通函数一样在任何地方可以像普通函数一样在任何地方直接调用直接调用,不需要,不需要通过对象或对象指针来调用。通过对象或对象指针来调用。492.2.8 友元关系友元关系友元类友元类若类若类A中声明类中声明类B为友元类,则为友元类,则类类B是是类类A的友的友元类,在类元类,在类B中可以访问类中可以访问类A中所有成员。中所有成员。友元类的友元类的声明语句声明语句如下:如下:class B;/前向引用声明前向引用声明class Afriend class B;/B为为A的友元类的友元类502.2.8 友元关系友元关系友元类友元类例例2.17 编写一个有关编写一个有关栈结构栈结构的程序,要求实现的程序,要求实现入栈和出栈入栈和出栈。其中有两个类,一个是结点类其中有两个类,一个是结点类CNode,拥有结,拥有结点值和指向下一结点的指针;另一个是栈类点值和指向下一结点的指针;另一个是栈类CStack,它拥有栈的头指针。,它拥有栈的头指针。由此生成的链式结构如图由此生成的链式结构如图2.3所示。所示。321头指针头指针栈顶栈顶栈底栈底指向下一结点的指针指向下一结点的指针512.2.8 友元关系友元关系友元类友元类代码代码smain2_17 结果分析结果分析由于栈类由于栈类CStack是结点类是结点类CNode的的友元类友元类,所以栈,所以栈CStack类中能访问类类中能访问类CNode的所有成员的所有成员。因此因此Push()和和 Pop()可以访问结点类可以访问结点类CNode对象的私有对象的私有成员并对其进行操作。成员并对其进行操作。说明说明封装是对象与外界之间一堵不透明的墙,而友元恰封装是对象与外界之间一堵不透明的墙,而友元恰好在这堵墙上开了一个小孔,它以牺牲信息隐藏、好在这堵墙上开了一个小孔,它以牺牲信息隐藏、削弱封装性为代价来削弱封装性为代价来实现数据共享实现数据共享。尽量少用尽量少用522.3.1 标准输入标准输入/输出流输出流标准输入输出流标准输入输出流 输出流输出流数据从程序中流入到屏幕或磁盘文件数据从程序中流入到屏幕或磁盘文件输入流输入流数据从键盘流入到程序中数据从键盘流入到程序中数据流数据流是是从源到矢从源到矢的数据流的抽象引用,具体地说,的数据流的抽象引用,具体地说,就是数据从一个对象流向另一个对象。就是数据从一个对象流向另一个对象。532.3.1 标准输入标准输入/输出流输出流流类库流类库它具有两个平行的根基类:它具有两个平行的根基类:streambuf类和类和ios类类。iosistreamostreamifstreamiostreamofstreamstreambuffilebufstringbuffstreambaseistream_withassignostream_withassigniostream_withassignfstream542.3.1 标准输入标准输入/输出流输出流流类库流类库streambuf类类负责缓冲区的处理,提供对缓冲区的低级操作。负责缓冲区的处理,提供对缓冲区的低级操作。ios类类是流基类,它及其派生类提供用户使用流类所需的是流基类,它及其派生类提供用户使用流类所需的接口,支持对接口,支持对streambuf的缓冲。的缓冲。派生类派生类输入流类输入流类istream和输出流类和输出流类ostream等。等。引用引用两个根基类以及由它们派生出的所有流类(当然包两个根基类以及由它们派生出的所有流类(当然包括括istream类和类和ostream类)都被定义在名为类)都被定义在名为iostream的头文件中。的头文件中。须用须用“#include”编译指令将编译指令将iostream头文件包含头文件包含进来。进来。55562.3.1 标准输入标准输入/输出流输出流系统流对象:系统流对象:cin进行从标准输入设备输入操作进行从标准输入设备输入操作,如键盘如键盘cout进行显示到标准输出设备操作,如显示器进行显示到标准输出设备操作,如显示器cerr进行未被缓冲的标准错误输出操作进行未被缓冲的标准错误输出操作clog被缓冲的标准错误输出操作被缓冲的标准错误输出操作572.3.1 标准输入标准输入/输出流输出流cin通用输入流类通用输入流类istream的对象,与标准输入设备连的对象,与标准输入设备连接。接。通过重载运算符通过重载运算符“”执行输入操作,在流操作执行输入操作,在流操作中将中将“”称为称为提取运算符提取运算符。cin从输入流中取出数据,数据从提取运算符从输入流中取出数据,数据从提取运算符“”处流进程序。处流进程序。输入时以空格或回车为界定符输入时以空格或回车为界定符int I,jcinIj;582.3.1 标准输入标准输入/输出流输出流cout通用输出流类通用输出流类ostream的对象,与标准输出设备连接。的对象,与标准输出设备连接。通过重载运算符通过重载运算符“”执行输出操作,在流操作中,将执行输出操作,在流操作中,将“”称为称为插入运算符插入运算符。插入运算符插入运算符“”向输出流发送字符。实际上,位于插向输出流发送字符。实际上,位于插入运算符右侧的字符串被存储在入运算符右侧的字符串被存储在“”左侧的流中。左侧的流中。可以连续输出,可以连续输出,endl结束回车结束回车cout m n endl;等同:等同:cout m;cout“;cout n;cout endl;例:例:smain2_18.cpp592.3.1 标准输入标准输入/输出流输出流操纵符是直操纵符是直接插入到流接插入到流中的格式化中的格式化指令,一般指令,一般都定义在都定义在ios_base类类中和中和头文件中,头文件中,分为带参数分为带参数和不带参数和不带参数两类。两类。注:注:必须与必须与“”同时同时使用,且只使用,且只影响跟随其影响跟随其后的流数据后的流数据602.3.1 标准输入标准输入/输出流输出流612.3.1 标准输入标准输入/输出流输出流例如:例如:cout setw(5)n /不能读出空格不能读出空格get();/读一个字符包括读一个字符包括getline(char*,int,char);/等于等于int或遇到或遇到char就停止就停止read();/读字节(二进制文件)读字节(二进制文件)写数据写数据 put(char);write();692.3.2 文件输入输出流文件输入输出流例例例例2.19 下面的程序将用户输入显示到屏幕上,输入字母下面的程序将用户输入显示到屏幕上,输入字母y时输出时输出OK并结束。并结束。smain2_19.cpp 例例2.20 连续读入一串字符,直到遇到字符连续读入一串字符,直到遇到字符q时停止,然时停止,然后输出这个字符串。要求字符个数最多不超过后输出这个字符串。要求字符个数最多不超过79个个smain2_20.cpp 例例2.21 将英文字母及对应的将英文字母及对应的ASC值输出到屏幕上。值输出到屏幕上。smain2_21.cpp702.3.2 文件输入输出流文件输入输出流例例2.21 将英文字母及对应的将英文字母及对应的ASC值输出到屏值输出到屏幕上。幕上。smain2_21.cpp例例2.22 员工管理系统中的输入输出员工管理系统中的输入输出 smain2_22.cpp71课堂练习课堂练习实验室设备管理系统实验室设备管理系统设设备备包包括括设设备备编编号号、设设备备名名、设设备备类类型型、设设备备价价格格、设设备备购购入入时时间间,要要求求完完成成如如下下基基本本功功能能:初初始始化化设设备备表表,新新进进设设备备,设设备备报报废废,查查找找设设备,设备外借,归还设备备,设备外借,归还设备。72小结小结类是对象的抽象,包括成员变量和成员函数类是对象的抽象,包括成员变量和成员函数对象是类的具体化,定义对象即实例话对象对象是类的具体化,定义对象即实例话对象为了实现封装,定义了为了实现封装,定义了public/private/protect访问区分访问区分符,对信息进行隐藏和提供接口符,对信息进行隐藏和提供接口为了自动对成员变量初时化,需定义构造函数,有时为了自动对成员变量初时化,需定义构造函数,有时需要重载;需要重载;为了自动撤销消亡对象的存储空间,需定义析构函数为了自动撤销消亡对象的存储空间,需定义析构函数对象、对象指针、对象数组都可以访问类成员对象、对象指针、对象数组都可以访问类成员静态变量为类的所有对象提供了共享的存储空间静态变量为类的所有对象提供了共享的存储空间标准输入标准输入/输出以数据流的形式从一个对象流入另一输出以数据流的形式从一个对象流入另一对象。对象。73Thanks!Thanks!74

    注意事项

    本文(第二章 类与对象.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开