书签 分享 收藏 举报 版权申诉 / 22
上传文档赚钱

类型c++面向对象复习题答案版要点.doc

  • 上传人(卖家):2023DOC
  • 文档编号:5544711
  • 上传时间:2023-04-24
  • 格式:DOC
  • 页数:22
  • 大小:154.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《c++面向对象复习题答案版要点.doc》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    c+ 面向 对象 复习题 答案 要点
    资源描述:

    1、一、 填空题1.C+中有两种数据类型: ( char )和 ( int long )可以使用signed修饰符。在C+中,用数组、指针、和( 引用 )作为函数参数,能够将参数值带回。2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数 ),方法是在函数类型前加上(inline)关键字。3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承 )、( 多态 )。4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类

    2、的)构造函数,否则应用程序会产生一个编译错误。6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享 )。7.在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同 )。8.在C+中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装 )特性。9.预编译指令由三种,它们是:文件包含、 ( 宏定义 )和 ( 条件编译 )。10.静态的成员函数没有隐含的 ( this ),所以,它们只能直接访问类的静态的数据成员。11.在C+中,函数的参数有两种传递方式,它们是值传递和( 地址 )。12.当非静态成员函数被调用时,该成员函

    3、数的( this )指向调用它的对象。13.拷贝构造函数使用( 引用 )作为参数初始化创建中的对象。14.在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变 )。15.在C+中,构造派生类对象时,总是先从( 基类 )的初始化开始的。16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为( 虚基类 )。18.在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类 ),定义该类至少具有一个( 纯虚函数 )。19.在C+中构造一个对象时,其数据成员在构

    4、造函数中初始化。对于内嵌的对象、 ( 常量 )、 ( 引用 )数据成员需要在构造函数的成员初始化列表中初始化。 20.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言, ( 可以访问 );而对于其外部的程序而言, ( 不可以访问 )。21.控制格式输出的操纵符中,(setprecision)是设置数据精度的,( hex )是设置十六进制的。22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为_0_ _。23已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+4的值为_e_ _。24数组

    5、与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于 地址 传递,对形参的改变可影响到实参。25利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 公有 的成员;若要访问其他成员变量,需要通过 公有 函数或友元函数函数。26一个_类_和_对象_的关系,正如基本数据类型与该类型的变量一个。27类成员的默认访问方式是_私有的_.28一个类有_多个_个构造函数,有_一个_析构函数。29类的_静态_成员函数不能对类中的非静态成员进行默认访问。30如果说明类B是类A的友元类,则类B的所有成员函数都是类A的_友元函数 _。31利用成员函数对二元运算符重载,其左操

    6、作数为对象,右操作数为实际参数 。32类有两种用法:一种是类的实例化,即生成类的_模板类_ ;另一种是通过_基类_派生出新的类。33运算函数中的关键字是_ _ operator _,它和运算符一起组成该运算符函数的函数名。34如果一个类中有一个或多个纯虚函数,则这个类称为_ _抽象类_。35文件的打开是通过使用类_ _ _对象_的成员函数来实现的。36设所有变量均为整型,则表达式(e=2,f=5,e+,f+,e+f)的值为_9_。37已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=c+1的值为_d_。38函数的形参在未被调用之前 不被 分配空间,函数的形参的类型 要和实参的相

    7、同。39类的成员分为数据成员和_ _ _成员函数_。40类完成了面向对象程序设计的_抽象_特性。41构造函数是_对象_被创建时自动执行,对象消失时自动执行的成员函数称为_析构_对象 43在继承机制下,当对象消亡时,编译系统先执行 派生类 的析构函数,然后才执行派生类中子对象类的析构函数,最后执行 基类 的析构函数。44类的_静态_数据成员是类所有对象共享的成员。45友元函数_不是_类的成员函数。(是/不是)46如果类A继承了类B,则类A称为_派生类_,类B称为_基类_。47运算符重载后,原运算符的优先级和结合特性_不会_改变。(会/不会)48_纯虚函数_是一个在基类中说明的虚函数,但未给出具体

    8、的实现,要求在其派生类实现。49文件的关闭是通过通过使用类_的成员函数_来实现的。(去掉)二、选择题1面向对象的( B )是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。A多态性 B封装性 C继承性 D重用性2C+的合法注释是( B )。A/*This is a C program/* B/ This is a C programC “This is a C program” D/*This is a C program/3关于C+和C语言的描述中,( C )是错误的?AC是C+的一个子集 B C程序在C+环境可以运行C

    9、 C+程序在C环境可以运行 D C+是面向对象的而C是面向过程的4运算符 +、=、=、% 中,优先级最低的运算符是( C )。A. + B.a+&cd)?+d:a=中,优先级最高的运算符是( C )。A+ B= C* D=24下列不合法的变量名为(A )。Aint Bint1 Cname_1 Dname025已知x=43,ch=A,y=0;则表达式(x=y&chB&!y)的值是( C )。A0 B语法错 C1 D“假” A语句for(i=0;i+)表示无限循环 Bfor(;)表示无限循环26以下不正确的是(c)。?Cfor()也表示无限循环 Dwhile(1)表示无限循环27在函数的返回值类型

    10、与返回值表达式的类型的描述中,错误的是( B,D )。A 函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的B 函数返回值的类型就是返回值表达式的类型C 函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型D 函数返回值类型决定了返回值表达式的类型28如果一个函数无返回值,定义时它的函数类型应是(C)。A任意 Bint Cvoid D无29在C+语言中,关于参数默认值的描述正确的是(A,B)。A只能在函数定义时设置参数默认值B设置参数默认值时,应当从右向左设置C设置参数默认值时,应当全部设置D设置参数默认值后,调用函数不能再对参数赋值30若有以下定义,则说法错误的

    11、是( D )。 int a=100,*p=&a ;A声明变量p,其中*表示p是一个指针变量B变量p经初始化,获得变量a的地址C变量p只可以指向一个整形变量D变量p的值为10031列关于结构体的说法错误的是(D )。A结构体是由用户自定义的一种数据类型B结构体中可设定若干个不同数据类型的成员C结构体中成员的数据类型可以是另一个已定义的结构体D在定义结构体时,可以为成员设置默认值32下列有关类的说法不正确的是( C )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似33( C )的功能是对象进行初始化。A析构函数 B.

    12、 数据成员 C.构造函数 D.静态成员函数34关于友元的描述中,( A )是错误的。A 友元函数是成员函数,它被说明在类体内B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数35为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A,B,C )。A.public B. protected C.private D. static36派生类的对象对它的( A,B,D )是可以访问的。A公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员3

    13、7多继承派生类构造函数构造对象时,(B )被最先调用。A派生类自己的构造函数 B虚基类的构造函数C非虚基类的构造函数 D派生类中子对象类的构造函数38C+类体系中,不能被派生类继承的有(C )。A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数39编译时的多态性可以通过使用(A,D )获得。A虚函数和指针 B重载函数和析构函数 C虚函数和对象 D虚函数和引用40下列描述中,( A )是抽象类的特征。A可以说明虚函数 B可以进行构造函数重载 C可以定义友元函数 D不能说明其对象三、指出并改正下列程序段中的语法错误。题目答案1.float x=3.26f;int &ref1=x;/ fl

    14、oat1.类型不一致2.int d1=3, d2=2;int * const dp=&d1;dp=&d2;*dp=5;2.常指针3. /Nums为已定义的类Nums *fp;fp=new int4;3.类型不一致4. void func(int first, int 2_secnd);4.标识符得字母开头5.void Pixel:operator=(Pixel &p1, Pixel &p2);5.“=”运算符重载函数返回类型不对6./Pixel有两个整型成员x和yPixel Pixel:operator+=(Pixle&p)constx+=p.x;y+=p.y;return *this;6.在

    15、这里this是指向常量的常指针2、指出并改正下列程序段中的语法错误。题目答案1.int x=13;const int &ref=x;ref=10;1.常引用不能赋值了2.double *fp;fp=new int(3);2.类型不一致3. void func( first, int secnd);3. first不是类型说明4. /Pixel有两个整型成员x和y,其拷/贝构造函数定义如下:void Pixel(const Pixle& p);4.不能有“void”5.friend Pixel & operator=(Pixel &p1, Pixel&p2);5.不能定义友元函数,只能是成员函数

    16、。6. /Pixel有两个整型成员x和yPixel Pixel:operator+(int) Pixel temp; temp=*this;x+;y+;return *this;temp;6.四、程序填空1编写函数将字符串按逆序存放。#include#include#includevoid main()int i,n;char s100,temp;coutinput string:endl; (1) get(s); n= (2) strlen(s); for(i=0;in/2;i+)temp=si;si=sn-i-1; sn-i-1=temp;coutNow,string:endl;puts(

    17、s); 2.下列程序定义了类Pixel,请完成前置+和后置+的运算符函数的定义。class Pixelint x,y;public:Pixel(int xx=0,int yy=0) x=xx; y=yy; Pixel operator +();Pixel operator +(int);void display();Pixel Pixel:operator +() x+;y+;return (3) *this Pixel Pixel:operator +(int) ( 4 )Pixel temp=*this; x+; y+;return ( 5 ) temp; void Pixel:displ

    18、ay()cout(x,y)endl;3. 根据给定的程序执行结果,将下列程序补充完整。#include class Basepublic: ( 6 )Base() cout” Delete Derived”lend; ;class Derived:public Basepublic: ( 7 )Derived ()cout” Delete Base”lend; ;void main() Base *p1= ( 8 )new Derived ; delete p1; 程序的执行结果如下:Delete DerivedDelete Base4定义一个字符串类String,有两个私有数据成员:char

    19、* content和int len;要求1)在构造函数中提示用户输入字符串,;2) 用户能提取和显示字符串;(分别由两个函数完成)3)实现对字符串中所有小写字母变成大写,并显示。注意内存的分配与释放。类定义的部分代码如下,请补充代码使类的定义完整。#include #include #include class Stringchar* content;int len;public:String(); String() ( 1 ) delete content; void display();void upper_str();char* get_str() const ( 2 ) return

    20、content; ;String:String() char ch50;/?coutch;len=strlen(ch);content= ( 3 )new char50; if(!content)cout Memory allocation eror!;exit(1);strcpy(content,ch);void String:display()coutcontent have len characters.endl; void String:upper_str() for (int i=0;ilen;i+)if ( 4 )(a= contenti& contenti =z) content

    21、i= ( 5 ) contenti+32; 5. 下列程序定义了类Point,请完成前置-和后置-的运算符函数的定义。class Pointfloat x,y;public:Point(float xx=0,float yy=0) x=xx; y=yy; Point operator -();Point operator -(int);void display();Point Point:operator -() x-;y-;return ( 6 )*this; Point Point:operator -(int) ( 7 ) Point temp;temp=*this; x-; y=y-;

    22、 ( 8 )return temp; void Point:display()cout(x,y)endl;6、程序填空,直接将答案写在空行上1._#incolude _/_1_class A int a;public: A(int i)a=i; void print()coutaendl;class B A obj_a; int b;public:_B(int i): obj_a (i)_ _ b=i; void print();_void B:print()_/3_obj_a.print();coutbendl;int main( )B obj_b(3,4);obj_b.print();re

    23、turn 0; 2.#include 5#include class Complexdouble real,image;public:Complex(double r=0,double i=0) real=r; image=i; ; 4 friend ostream & operator ( ostream &, Complex &) ; 5 ostream & operator ( ostream & output , Complex & obj) ; output obj.real obj.image; 6 return output ;int main()4Complex c;coutc

    24、;return 0;/重载五、写出程序的运行结果1.#include int main(void)char str=configuration;char *p=str; coutpendl; for(int i=0;isizeof(str);i=i+2)coutstri; coutendl;/字符c的ASCII码是99for(i=0;i4;i+)cout*p+i ;coutendl;return 0;第1题的运行结果如下:configurationcniuaincdef2.# includeclass Nodepublic:int data;Node *next;Node(int d,Node

    25、 * q=0) data=d;next=q; 第2题程序运行结果:67-45-23-;int main()int n;Node * p;Node * q=0;while (cinn)p=new Node(n,q);q=p;for(p=q;p;p=p-next)coutdata;cout*n;return 0;/假定,输入如下3个数据:23 45 673.#include class ConstTestint m1,m2;public:ConstTest(int x,int y) m1=x;m2=y;void print()coutm1,m2endl;void print() const;voi

    26、d ConstTest:print() constcoutconst fun: m1+m2endl;int main()ConstTest a(6,9);a.print();const ConstTest b(2,5);第3题程序运行结果:6, 9const fun: 7b.print(); return 0;4.#include class Planeprotected:int x,y;public:Plane(int a,int b)x=a;y=b;virtual void print() cout(x,y)endl;virtual void increase(int d); ;class

    27、 Solid:public Planeint z;public:Solid(int a,int b,int c):Plane(a,b)z=c;void print() cout(x,y,z)print(); ptr=&d2;ptr-print(); ptr-increase(4); ptr-print(); d2.print ();(3, 6)(2, 7, 9)(6,11,13)(6,11,13) 第4题运行结果:(3,6)(2,7)(6,11)(6,11,9)5.去掉上题(即第4小题)程序中的 “ virtual”关键字,运行结果如何? (8 分)第5题运行结果:6. #include cl

    28、ass Countstatic int count;public:Count()count+;static int Getc()return count;Count()count-;int Count:count=100;int main(void)Count c1,c2;coutCount:Getc()endl;Count c3;coutCount:Getc()endl;coutCount:Getc()endl;return 0;第6题102105102的运行结果:1. #include void main(void)char string=fortunate ;char *p=string

    29、; coutstringendl;cout*p*(p+2)*(p+4)*(p+6)endl;for(int i=1; isizeof(string); i+=2)coutstringi; 2. #includevoid main() int a;couta;switch(a%2) case 0: couta是偶数endl;default: couta是奇数endl;a=a/4;coutaendl; 如果输入数为6,则输出结果是什么? 14.( 3 分)#includeclass Point int x,y; public: Point(int a=0,int b=0) x=a; y=b; vo

    30、id move(int xoffset,int yoffset) x+=xoffset; y+=yoffset; int getx() return x; int gety() return y;class Rectangle:public Point int length,width; public: Rectangle(int x,int y,int l,int w):Point(x,y) length=l;width=w; int getlength()return length; int getwidth()return width;void main() Rectangle r(0,

    31、0,4,9);r.move(33,66);coutr.getx(),r.gety(),r.getlength(),r.getwidth()endl;5.#include class Base public:virtual void show()coutBase:show()endl;class Derived1: public Basepublic:void show()coutDerived1:show()endl;class Derived2: public Derived1public:void show()coutDerived2:show()endl;void main()Base b;Derived1 d1;Derived2 d2;Base *ptr3=&b,&d1,&d2;for (int i=0;ishow();Base:show()Derived1:show()Derived2:show()6.去掉上题(即第5小题)程序中的 “ virtual”关键字,运行结果如何?Base:show()Base:show()Base:sho

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:c++面向对象复习题答案版要点.doc
    链接地址:https://www.163wenku.com/p-5544711.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库