面向对象程序设计总复习资料_第1页
面向对象程序设计总复习资料_第2页
面向对象程序设计总复习资料_第3页
面向对象程序设计总复习资料_第4页
面向对象程序设计总复习资料_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。面向对象程序设计总复习(_夏)复习之一、对照书本(或上课课件)上,搞懂有关概念【第0-1章】1.面向对象程序设计是不同于传统程序设计的一种新的程序设计范型。它对降低软件的复杂性,改进其重用性和维护性,提高软件的生产效率,有着十分重要的意义。因此面向对象的程序设计被认为是程序设计方法学的一场实质性的革命(在导学中)。2.面向对象(O-O)程序设计是一种新的程序设计范型。这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序中的一切操作都是经过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。3.现实世界中,对象一般能够表示为:属性+行为现实世界中的对象,具有以下特性:(1)每一个必须有一个名字以区别于其它对象;(2)用属性来描述对象的某些特征;(3)有一组操作,每组操作决定对象的一种行为;(4)对象的行为能够分为两类:一类是作用于自身的行为,另一类是作用于其它对象的行为。4.在现实世界中,类是一组具有相同属性和行为的对象的抽象。类与对象的关系是抽象和具体的关系。在C++面向对象的程序设计中,把类中的属性称为数据(数据成员),类中的操作是用函数(函数成员)来实现的。5.面向对象程序设计的基本特征:抽象性、封装性、继承性和多态性(1).抽象是经过特定的实例(对象)抽取共同性质后形成概念的过程。(2).在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。(3).继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。同时派生类还能够增加新的操作和数据。从继承源上分,继承分为单继承和多继承。(4).面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。如能够有同名函数【第2章】6.简单的C++程序例2.1计算两个整数之和sum.cpp这两行也可用一行代替:#include<iostream.h>#include<iostream>这两行也可用一行代替:#include<iostream.h>usingnamespacestd;intmain()//主函数{intx,y,sum;//定义三个整型变量cout<<"输入二个数:"<<'\n';//界面:提示用户输入二个数cin>>x;//从键盘输入变量x的值cin>>y;//从键盘输入变量y的值sum=x+y;cout<<”x+y="<<sum<<'\n';//输出return0;}C++新行(回车换行)'\n’或endl(ENDL的小写)新的输入/输出:老:scanf新:cin是标准输入流,在程序中用于代表标准输入设备,即键盘。运算符”>>”表示向右老:printf新:cout是标准输出流,在程序中用于代表标准输出设备,即屏幕。运算符”<<”表示向左使用cin或cout进行I/O操作时,在程序头中头文件#include<iostream.h>7.函数原型(函数声明)(重点)返回值类型函数名(参数表);例2.7intadd(inta,intb);intadd(int,int);使用在前,定义在后,要先声明。若定义在前,使用在后,就可不必声明。8.函数重载:C++中,只要函数的參数的类型不同,或者參数个数不同,或者二兼有之,几个函数能够用相同的函数名。称为函数重载9.C语言用函数malloc()和free()动态分配内存和释放动态分配的内存。C++使用运算符new和delete能更好、更简单地进行内存的分配和释放。10.引用(重点)引用可为变量起别名,它主要用作函数参数以及函数的返回类型。引用有三种:(1)有变量的引用、(2)参数引用和(3)返回值引用。11.1、&取地址运算符取西瓜皮2、*指针运算符(间接访问运算符)挖西瓜馕【第3章】12.C++中说明(类的定义)类的一般形式为clsaa类名{[private:](可省略)私有段数据成员和成员函数protected:保护段数据成员和成员函数public:公有段数据成员和成员函数};成员函数的定义方式:第一种方式是在类定义中只给出成员函数的原形,而成员函数体在类的外部定义。第二种方式是将成员函数定义在类的内部,即定义为内置函数。(1)隐式定义(2)显式定义13.类对象中成员的引用(使用、访问都是同一个意思)不论是数据成员,还是成员函数,只要是公有的,就能够被外部函数直接引用,引用的一般格式是:对象名.数据成员名和对象名.成员函数名(实参表)外部函数不能引用对象的私有成员总之:类成员的访问属性:类的公有成员不但能够被类中成员函数访问,还能够在类的外部经过类的对象进行访问。类的私有成员只能被类中成员函数访问,不能在类的外部经过类的对象进行访问。14.构造函数的特点:(1)构造函数的名字必须与类名相同,否则编译程序将把它当作一般的成员函数来处理。(2)构造函数没有返回值,在声明和定义构造函数时,是不能说明它的类型的的,甚至说明为void类型也不行。(3)构造函数也是成员函数,与普通的成员函数一样,构造函数的函数体可写在类体内,也可写在类体外。(4)一般不提倡在构造函数中加入与初始化无关的内容(5)构造函数一般声明为公有成员。它不需要用户来调用,而是在建立对象时自动执行的。(6)在实际应用中,一般需要给每个类定义构造函数。如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。complex::complex(){}//不能带任何参数。(7)定义构造函数时,也能够是不带参数的。15.C++允许重载构造函数,这些构造函数之间名字相同,而以它们所带参数的个类或类型的不同而区分。带默认参数的构造函数。16.对象的赋值和拷贝构造函数,其作用是,在建立新对象时,使用一个已经存在的对象去初始化这个新对象。piontp2(p1);17.析构函数也是特殊成员函数,用于释放对象。(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号(~)。(2)析构函数没有参数,也没有返回值,而且不能重载,因此在一个类中只能有一个析构函数。(3)当撤消对象时,编译系统会自动地调用析构函数。18.能够用类定义对象数组:类名数组名[元素个数];19.当需要时,能够用类定义对象指针。对象指针就是用于存放对象地址的变量类名*对象指针名;20.类的封装性,使类只能经过成员函数来访问私有成员。这是好事但也有一定的限制太死的感觉。能否开个小孔口,必要时作个破例,使外界函数、别的类的个别成员函数、甚致别的类的所有成员函数可访问某个类的私有成员。这个方法称为友元。21.友元包括友元函数和友元类(1)友元函数分为:非成员函数作友元和别的类的成员函数作友元(2)友元类:在类定义时,在类内说明一个类(该类前面已定义),前加上friend表示该整个的一个类是本类的友元类。友元类的所有成员函数能够访问它自己类私有成员又可本类的私有成员。【第4章】22.派生类的定义基类:class基类名{类的内容};声明派生类:class派生类名:继承方式基类名{//派生类新增的数据成员和函数成员};继承方式可为公有继承(用public)、私有继承(用private或缺省)和保护继承(用protected)23.基类成员在派生类中的访问属性(重点)基类中的成员在公有派生类中的访问属性在私有派生类中的访问属性在保护派生类中的访问属性私有成员不可直接访问不可直接访问不可直接访问公有成员公有私有保护保护成员保护私有保护24.派生类对基类成员的访问规则(重点)(1)私有继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问(2)公有继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问可访问可访问不可访问(3)保护继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问25.派生类的构造函数和析构函数(1)派生类的构造函数和析构函数执行顺序无论何中派生,当创立派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤消派生类对象时,则先执行派生类的析构函数,随后再执行基类的析构函数。(2).派生类的构造函数和析构函数的构造规则简单的派生类的构造函数一般格式为:派生类名(参数总表):基类名(参数表){派生类新增成员的初始化语句}其中基类构造函数参数,来源于派生类的构造函数的参数总表,也能够用常数值。26.从多个类,派生出一个类,也即一个类从多个基类继承称为多重继承。多重继承的声明格式如下:class派生类名:继承方式1基类名1,...,继承方式n基类名n{派生类新增的数据成员和成员函数};派生类继承了基类1到基类n的所有数据成员和函数成员,其访问属性规则与单继承情况一样,多继承可看成单一继承的扩展。27.如果一个派生类有多个直接基类,而这些直接基类又有一个相同的基类,则在最低层的派生类中会保留这个间接的共同基类数据成员的多份同名成员。在访问这些同名成员时会产生二义性,才考虑虚基类,虚基类在派生类中声明的形式:class派生类名:virtual继承方式基类名{//............};经过这样的声明后,当基类经过多条派生路径被一个派生类继承时,该派生类只继承该基类一次,也就是说,基类成员无”副本”【第5章】28.编译时的多态性与运行时的多态性静态联编(前期联编)静态联编要求在程序编译时就知道调用哪个函数,就决定如何实现某一动作。动态联编(后期联编、滞后联编)一直要到程序运行时才能确定调用哪个函数。系统在运行时才动态完成的联编。静态联编支持的多态性称为编译时多态性,也称静态多态性。在C++中,编译时多态性是经过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时多态性,也称动态多态性。在C++中,运行时多态性是经过继承和虚函数来实现的。29.运算符重载:C++除了能够对函数重载外,还能够对大多数运算符实施重载。外部普通函数类的友元函数是类的成员函数成员运算符函数定义的语法形式成员运算符函数的原型在类的内部声明格式为:classX{//...返回类型operator运算符(形参表);//...};30.虚函数的引入,基类的指针能够指向它的公有派生类的对象,用”指针”才有虚函数的问题。引入派生类后,由于派生类是由基类派生出来的,因此指向基类的指针和指向派生类的指针是相关的:(1)基类的指针能够指向它的公有派生类的对象。但不允许指向它的私有派生类的对象。(2)派生类的指针不允许指向它的基类的对象。(3)基类的指针指向它的公有派生类的对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的新成员。31.有时在程序设计时,使用对象指针的目的是为了动态和灵活,即当指针指向不同对象(基类对象或派生类对象)时,能分别调用不同类的成员函数。如果将函数说明为虚函数,就能实现这种动态调用的功能。虚函数的定义是在基类中进行的:virtual函数类型函数名(形参表){函数体}32.纯虚函数的一般形式如下:virtual函数类型函数名(参数表)=0;如果一个类至少有一个纯虚函数,那么就称该类为抽象类【第6章】33.模板的概念模板是C++语言的一个重要特性。模板是实现代码重用机制的一种工具,它能够实现类型参数化,即把类型定义为参数,从而实现了代码重用,使得一段程序能够用于处理多种不同类型的对象,大幅度地提高程序设计的效率。34.函数模板和类模板(1).函数模板与模板函数所谓函数模板,就是写一个函数模子,用这个模子套印出许多功能相同,参数类型和返回类型不同的函数。模板函数:函数模板实例化后的具体函数。(2)类模板和模板类类模板(也称为类属类或类生成类)是:允许用户为类定义一种模子,使得类中的某些数据成员,某些成员函数的参数或者返回值,能取任意数据类型【第7章】35.C++流概念:cin>>对象;cout<<对象;整型、实型、字符、字符串等有格式的输入输出36.文件的输入输出:在含有文件操作的程序中,必须有如下的预处理命令:#include<fstream.h>open、close函数文本文件、二进制文件读写。复习思考题、即考试的A、B、C、D选择题和填空题一、分清下面的概念,那些是正确的,那些是错误的1.面向对象程序的主要结构特点之一√程序一般由类的定义和类的使用两部分组成。√程序中的一切操作都是经过向对象发送消息来实现的。×程序中的一切操作都是经过调用函数来实现的。×程序一般由函数定义和函数的使用两部分组成。×程序一般由变量的定义和变量的使用两部分组成。×程序一般由对象的定义和对象的使用两部分组成。×程序中的一切操作都是经过定义函数来实现的。×程序中的一切操作都是经过定义类来实现的。2.对象是现实世界中的一个实体,其特性√每个对象必须有一个名字,以示区别。√有属性描述。√有一组操作。√创立对象时会自动调用构造函数。×必须有一个关键字。×一定要自定义一个构造函数。×要有二个以上数据。3.面向对象系统的特性是√抽象性√封装性 √继承性√多态性×完整性×唯一性×二义性 ×安全性4.类的概念是√对一组具有共同的属性特征和行为特征的对象的抽象。√同一类数据的集合。×类即是对象数组。×各种对象的集合。×同一记录的集合。×同类函数的集合。×现实世界中所有对象的集合。5.类和对象之间的关系是√抽象和具体的关系。√类型和变量之间的关系。√结构类型和结构体的关系。×定义和被定义的关系。×调用和被调用的关系。×类即是对象数组。×型和值的关系。×指针和所指的对象的关系。6.构造函数的特征√构造函数的函数名与类名完全相同。√构造函数能够有形式参数。√构造函数能够重载。√在创立对象时被执行。×在程序编译时被执行。×在创立类时被执行。×在程序装入内存时被执行。×构造函数必须说明返回类型。×程序中要有调用构造函数的语句。7.析构函数的特征√一个类中只能定义一个析构函数。√析构函数名与类名相同并加~。√系统会自动调用析构函数。×析构函数的定义只能在类体内。×析构函数能够有多个参数。×一个类中能定义多个析构函数。关于成员函数特征的下述描述√成员函数能够重载。√成员函数能够设置参数的缺省值。√成员函数能够是静态的。√类定义中只给出成员函数的原型,而成员函数在类外定义。√类定义中只给出成员函数的原型,而成员函数在类外定义并在之前加inline。√可在类内定义。×成员函数一定要在类内定义。×成员函数一定是内置函数。9.下列的各种函数中,是本类的成员函数√构造函数 √析构函数 √拷贝构造函数√缺省参数的构造函数×友元函数×主函数×普通函数×标准函数10.在友元函数的下面说法中,正确的是:√友元函数是独立于当前类的外部函数。×一个友元函数不能同时定义为两个类的友元函数×友元函数必须在类的外部定义。×在外部定义友元函数时,必须加friend11.友元的作用是什么,一个类的友元能够访问该类的什么√提高程序的运行效率。×加强类的封装性。×实现数据的隐藏性。×增加成员函数的种类√所有成员 ×只能是私有成员 ×只能是公有成员 ×成员函数12.对基类和派生类的关系描述中√派生类(如公共汽车)是基类(汽车)的子集。√派生类是基类定义的扩延。√无论哪种派生,基类的私有成员不允许派生类的成员函数访问。√无论哪种派生,基类的公有成员允许派生类的成员函数访问。√无论哪种派生,基类的保护成员允许派生类的成员函数访问。×派生类是基类的具体化。×派生类是基类的组合。×无论哪种派生,基类的保护成员不允许派生类的成员函数访问。13.派生类的对象对它的基类成员中,能够访问的是√公有继承的公有成员。×公有继承的保护成员。×公有继承的私有成员。×公有继承的所有成员。×私有继承的公有成员。×私有继承的私有成员。×私有继承的所有成员。×私有继承的保护成员。14.对虚基类正确的论述√定义派生类时,在基类名前加virtual。×定义基类时加virtual。×成员函数前加virtual。×在派生类名前加virtual。15.一个派生类有多个父类,而这多个父类又有一个共同基类,这种情况,才考虑设置虚基类,其目的是:√消除二义性。简化程序。提高运行效率。减少目标代码。16.C++中函数能够重载:(P31)√只要函数参数的类型不同,√或者参数的个数不同,√或者二者兼有之,两个以上函数能够同名。17.不可重载的函数的是:√析构函数。(能够:)普通的成员函数。友元函数。外部函数。 18.可定义作运算符重载函数的是√成员函数。√友元函数。√类以外的函数。×析构函数。×无返回值的函数。×构造函数。19.不能重载运算符√::√?: &&[]new++()delete20.关于动态联编的描述,动态联编称为运行时的多态性是经过什么来实现的。√动态联编是以虚函数为基础的。√动态联编是在运行时确定所调用的函数的。√动态联编调用的函数,是用基类对象的指针或对象引用所指的函数。√继承和虚函数。动态联编是在编译时确定操作函数的。函数重载和运算符重载。 运算符重载。 函数重载。21.说白了,经过基类指针或引用来访问基类和派生类中的同名函数,才考虑虚函数。其描述:√虚函数是在基类中用virtual说明,派生类中重新定义的函数。×虚函数是一个static类型的成员函数。×虚函数是一个非成员函数。×派生类的虚函数与基类的虚函数具有不同的参数个数和类型。22.抽象类论述:√如果一个类至少有一个纯虚函数,那么该类为抽象类。√抽象类只能用作其它类的基类,不能建立抽象类对象。√抽象类能够用来定义指针。×抽象类能够作为某个函数的返回类型。23.进行文件操作时需要包含的文件,C++用cout和cin进行输出/输入操作时需要包含文件。√fstream.h √iostream.h stdio.h stdlib.hstring.hmath.h24.面向对象程序设计是不同于传统程序设计的一种新的程序设计范型。面向对象的程序设计被认为是程序设计方法学的一场实质性的革命(在导学中)。25.面向对象(O-O)程序设计是一种新的程序设计范型。这种范型的主要特征是:程序=对象+消息26.现实世界中,对象一般能够表示为:属性+行为27.在定义类时,第一个保留字。(class)28.将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,这是面向对象程序设计的(封装性)。而函数重载是(多态性)。29.C++中类的定义内部,英文private段,protected段,public段(私有段保护段公有段)30.定义了类A,在主函数中如出现:A*p,obj,ob[10];的语句。(则p是对象指针、obj是对象、ob是对象数组。)31.C++的运算符:<<>>newdelete(输入输出申请释放)32.在C++定义的类中,成员可分为二类,有三个段。(数据成员函数成员私有公有保护)33.在一个类定义中,能够声明友元,友元能够是三种友元。(友元函数友元成员友元类)34.C++中,函数说明为voidfun(int&i)的引用叫,(参数引用),函数说明为void&fun(inti)的引用叫。(返回值引用)35.继承机制允许派生类继承基类的什么,(数据和操作)同时,派生类还能够增加新的什么。(数据和操作)36.类外的函数作运算符重载时,只能访问类的(公有)成员,而用类的友元运算符函数或成员运算符函数重载能够访问类的(所有)成员。37.一个类模板允许用户为类定义什么?(一个模式(子))使得类中的某些数据成员、某些成员函数的参数或返回值,能取什么类型?(任意数据类型)38.模板是实现代码重用机制的一种工具,函数模板的实例化、类模板的实例化分别称为(模板函数、模板类)复习之二、阅读程序写运行结果、程序填空(把这些程序真正读懂,不要背答案!)1.函数、函数调用、函数原型(包括参数引用、返回值的引用)2.类的定义和定义对象(包括对象指针)3.派生和继承的应用4.派生类的构造函数和析构函数执行顺序5.函数重载和运算符重载复习思考题1.#include<iostream.h>intadd(int,int);intmain(){intx,y,sum;cout<<”输入二个整数:”;cin>>x>>y;sum=add(x,y);cout<<”x+y=”<<sum<<endl;return0;}intadd(inta,intb){intc;c=a+b;returnc;}答案:输入二个整数:1020x+y=302.#include<iostream.h>voidfun1(inti){i+=5;}voidfun2(int&i){i+=15;}voidmain(){intk=10;fun1(k);cout<<"k="<<k;fun2(k);cout<<"k="<<k<<endl;}答案:k=5k=153.#include<iostream.h>int&f(int&i){i+=10;returni;}intmain(){intk=0;int&m=f(k);cout<<k<<’,’;m=20;cout<<k<<endl;return0;}答案:10,204.#include<iostream.h>classPoint{public:Point(intx1=0,inty1=0){x=x1;y=y1;}voidprint();private:intx,y;};voidPoint::print(){cout<<"x="<<x<<"y="<<y<<endl;}voidprint(Pointp){p.print();}voidmain(){Pointp1(10,20),p2(30),p3,*p;p=&p1; p->print();p2.print();print(p3);}答案:x=10y=20x=30y=0x=0y=05.#include<iostream.h>classPoint{public:Point(intx1=0,inty1=0){x=x1;y=y1;d=x*x+y*y;}voidprint(){cout<<"x="<<x<<"y="<<y<<”dist=”<<d<<endl;}private:intx,y,d;};voidmain(){Pointp1(1),p2(2,3),*p;p=&p1; p->print();p2.print();}答案:x=1y=0dist=1x=2y=3dist=136.#include<iostream.h>classBase{public:Base(intn){cout<<"现在进入Base基类的构造函数\n";i=n;}~Base(){cout<<"现在进入Base基类的析构函数\n";}voidshowi(){cout<<i<<endl;}private:inti;};classDerive:publicBase{public:Derive(intn,intm):Base(m){cout<<"现在进入Derive派生类的构造函数\n";j=n;}~Derive(){cout<<"现在进入Derive派生类的析构函数”<<endl;}voidshowj(){cout<<j<<endl;}private:intj;};voidmain(){Deriveobj(30,40);obj.showi();obj.showj();}答案:现在进入Base基类的构造函数现在进入Derive派生类的析构函数4030现在进入Derive派生类的析构函数现在进入Base基类的析构函数7.#include<iostream.h>classTime{ chara[9];public:Time(ints=0,intm=0,inth=0){hours=h;minutes=m;seconds=s;}voidshow(){cout<<"时间:"<<hours<<":"<<minutes<<":"<<seconds<<endl;}friendTimeoperator+(Timet1,Timet2);private:inthours;intminutes;intseconds;};Timeoperator+(Timet1,Timet2){Timetemp;temp.hours=t1.hours+t2.hours;temp.minutes=t1.minutes+t2.minutes;temp.seconds=t1.seconds+t2.seconds;if(temp.seconds>60){temp.seconds=temp.seconds-60;temp.minutes++;}if(temp.minutes>60){temp.minutes=temp.minutes-60;temp.hours++;} if(temp.hours>=24)temp.hours=temp.hours-24; returntemp;}voidmain(){TimeT,T1(20,23,21),T2(10,25,15),T3(5,10,15);T=T1+T2;T.show();T=T+T3;T.show();}答案:时间:12:48:30时间:3:58:358.#include<iostream.h>#include<string.h>classStr{public:Str(char*pi){p=newchar[strlen(pi)+1];strcpy(p,pi);}voidshow(){cout<<"字符串:"<<p<<endl;}voidoperator++();private:char*p;};voidStr::operator++(){Strtemp("\0");temp.p=newchar[2*strlen(this->p)+1];strcpy(temp.p,this->p);strcat(temp.p,this->p);this->p=newchar[2*strlen(this->p)+1];strcpy(this->p,temp.p);}voidmain(){StrT1("ABCDXYZ");++T1;T1.show();}答案:字符串:ABCDXYZABCDXYZ9.下面的程序定义一个类samp,有三类数据成员和一个构造函数和一个函数成员,填充程序缺少部分,使其变成完整的C++程序。#include<iostream.h>classSamp{protected:intb;.public:intc;(1)(intn,intm)//构造函数{a=n;(2);c=a+b;}int(3)(inti)//成员函数{if(i==1)returna;elseif(i==2)returnb;elsereturn0;}private:inta;};voidmain(){Sampobj(20,30);cout<<(4)<<endl;//输出20cout<<obj.getab(2)<<endl;//输出30cout<<(5)<<endl;//输出50}答案:⑴.Samp⑵.b=m;⑶.getab⑷.obj.getab(1)⑸.obj.c10.下面的程序定义一个类samp,有三类数据成员和一个构造函数和一个函数成员,填充程序缺少部分,使其变成完整的C++程序。#include<iostream.h>class(1){public:intc;(2)(intn,intm)//构造函数名{a=n;b=m;c=a+b;}int(3)(charch)//成员函数名{switch(ch){case'a':returna;break;case'b':returnb;break;default:return0;}}private:inta,b;};voidmain(){Myclass(4)(20,30);//定义对象cout<<obj.get('a')<<endl;//输出20cout<<obj.get('b')<<endl;//输出30cout<<(5)<<endl;//输出50}答案:⑴.Myclass⑵.Myclass⑶.get⑷.obj⑸.obj.c11.定义一个基类长方形Base,私有段有长a和宽b,公有段有构造函数,能显示长方形面积等。定义以该长方形为底面积的派生类长方体Cuboid,有高h,有构造函数,能显示长方体体积。在主函数中定义长方体对象,其长、宽、高分别为10,20,5,显示出长方体体积和长方形底面积。#include<iostream.h>classBase{//定义长方形public:Base(floata1=0,floatb1=0){(1)//公有段构造函数体}voidarea()//函数area()显示长方形面积{cout<<"长方形面积是:"<<a*b<<endl;}floatgetr(){returna*b;}private:.floata,b;};classCuboid:publicBase{//定义以该长方形为底的派生类长方体public:Cuboid(floata1,floatb1,floath1):(2)//构造函数{h=h1;}void(3)()//显示长方体体积的函数{cout<<"长方体体积是:"<<h*getr()<<endl;}private:floath;};voidmain(){(4)ob(10,20,5);//这里定义对象ob(5);//这里输出长方形面积ob.body();//这里输出长方体体积}答案:⑴.a=a1;b=b1;⑵.Base(a1,b1)⑶.body⑷.Cuboid⑸.ob.area()12.定义一个基类长方形Base,私有段有a和宽b,公有段有构造函数,能显示长方形面积等。定义以该长方形为底面积的派生类长方体Cuboid,有高h,有构造函数,能显示长方体体积。在主函数中定义长方体对象,其长、宽、高分别为10,20,5,显示出长方体体积和长方形底面积。#include<iostream.h>classBase{//定义长方形public:Base(floata1=0,floatb1=0){a=a1;b=b1;//公有段构造函数体}voidarea()//函数area()输出显示长方形面积{cout<<"长方形面积是:"<<(1)<<endl;}floatgetr(){returna*b;}//函数getr()计算长方形面积private:floata,b;};classCuboid:publicBase{//定义以该长方形为底的派生类长方体public:Cuboid(floata1,floatb1,floath1):(2)//构造函数{h=h1;}voidbody()//输出显示长方体体积的函数{cout<<"长方体体积是:"<<h*getr()<<endl;}private:floath;//h是长方体的高};voidmain(){(3)ob(10,20,5);//这里定义对象ob(4);//这里调用函数,输出长方形面积(5);//这里调用函数,输出长方体体积}答案:⑴.a*b;⑵.Base(a1,b1)⑶.Cuboid⑷.ob.area()⑸.ob.body()

复习之三、程序设计题(

把这些程序真正读懂)1.C++基础知识2.定义类、成员函数及构造函数的习题来自《VC++6.0面向对象程序设计实验提纲》1.下面是一个C程序,改写它,使它采用C++风格的I/O语句。#include<stdio.h>←#include<iostream.h>voidmain(){inta,b,d,min;printf("输入两个整数:");←cout<<"输入两个整数:";scanf(”%d%d”,&a,&b);←cin>>a;cin>>b;min=a>b?b:a;for(d=2;d<=min;d++)if((a%d==0)&&(b%d==0))break;if(d>min)printf("没有公约数!\n");←cout<<"没有公约数!\n";elseprintf("最小公约数是:%d\n",d);←cout<<"最小公约数是:"<<d<<endl;}2.编C++程序,从键盘输入二个任意大小的数,在屏幕上从小到大输出这二个数。#include<iostream.h>voidmain(){inta,b,c;cin>>a;cin>>b;if(a>b){c=a;a=b;b=c;}cout<<a<<””<<b<<endl;}3.定义一个基类圆Circle,私有段有圆的半径,公有段有构造函数,能显示圆面积等。定义派生类Ex_square为圆的外切正方形,有构造函数,能显示正方形面积。在主函数中定义外切正方形对象,其圆半径为10,显示两者面积。答案:#include<iostream.h>classCircle{floatr;//声明一个圆类public:Circle(floatx=0){r=x;}//构造函数voidarea1()//函数area()显示圆面积{cout<<"圆面积是:"<<3.14*r*r<<endl;}floatgetr(){returnr;}private:floatr;};classEx_square:publicCircle{//派生一个圆外切正方形类public:Ex_square(floatx):circle(x){}//构造函数voidarea2()//函数area()显示正方形面积{cout<<"外切正方形面积是:"<<4*getr()*getr()<<endl;}};voidmain(){Ex_squareob(10);ob.area1();ob.area2();}4.【习题3.32】建立类Cylinder,Cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类Cylinder中包含一个成员函数vol,用来显示每个Cylinder对象的体积。(数据:圆柱体的半径为2.2,高为8.09)答案:#include<iostream.h>classCylinder{//声明圆柱体public:Cylinder(doublea,doubleb){r=a;h=b;volnume=3.141592*r*r*h;}voidvol()//函数vol()显示圆柱体的体积{cout<<"圆柱体的体积是:"<<volnu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论