




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档C+ g序设计练习题、填空题1对象的三大基本特性分别为多态性、(2赋值运算符应重载为 () 函数。3用 ()声明的基类称为虚基类。4用 ()声明的函数称为虚函数。) 、封装性。5派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的( )6静态成员是对象的成员,()函数不是类的成员。7在函数体之前加 ()关键字可以防止覆盖函数改变数据成员的值。8一个 const 对象只能访问 ( ) 成员函数。9使用友元函数是为了提高程序效率,且节约了10.()开销。类名为“ ClassName ”的类,其拷贝构造函数的原型说明是()11由关键字 private 、 public 和 prot
2、ected 限定成员的访问权限分别是 ()、()和()。缺省关键字时成员的访问权限为 ( )12. 如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的 ();如果虚基类没有)函数13.14.调用 FunName 函数的方法 共有 ()种。静态成员函数是使用关键字 ( )说明的成员函数。一个函数的原型声明为“ void FunName(int=0, double=0, char=x); ”,则15. 的。编译时多态性是通过 ()实现的;运行时多态性是通过 ( )实现16.C+通过(17?在 C+中,声明类的关键字是 (18
3、 .声明 C+模板的关键字是 ()实现编译时多态性,通过 ( )实现运行时多态性。 )。)。19.调用函数原型声明为“int=0, float=1.0); ”的方法有 ()种。20. 处理 C+ +异常的方法:采用 ()结构。21. 用关键字 ()、( )和(护的。缺省关键字时,成员的访问权限为()。void FunName(short,)限定的成员,其访问权限分别为:公有的、私有的和保22. 在 C+中,处理 () 的方法是采用 try-catch 结构。23.在 C+中,用关键字 ( )说明内置函数。25. 将公共基类说明为26. 义在后,就必须先对函数进行27.成员函数。()时,多重派生
4、过程中公共基类在派生类中就只有一个拷贝了。在 C+中,如果函数调用在前、定 ( )。在成员函数头之后、函数体之前加 ( )修饰的成员函数称为类的常28.包含纯虚函数的类称为抽象类,这种类只能用作 ()来派生新类。由于抽象类的特殊性,我们24. 在 C+中,声明友元函数的关键字是 ( )可以说明抽象类的 (),但不能说明抽象类的 ()30.说明静态成员要使用关键字 ( )。31.当函数调用在前定义在后时,必须先对函数进行 ( )说明。32.的函数原型说明为33. 抽象类是包含 (34.载流插入运算符类名为“ ClassN ”的类的拷贝构造函数( )。)的类,必须注意:不能说明抽象类的( ),但可
5、说明抽象类的 ( )。流插入运算符 只能重载为友元函数,重 的函数名为 ()。29.double ”、函数名为“ vifun ”且无参数的纯虚函数的表达形式为35. 要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字精品文档 说明函数类型为()14. 下面有四种关于类的说法,其中不正确的是()精品文档36类和对象的关系可表述为:类是对象的(37在 C+ 中,三种继承方式的说明符号为 ( 承方式为 ( ) 。38如果只想保留公共基类的一个复制,就必须使用关键字(39若要把 void myfun( ) 定义为类 A 的友元函数,则应在类 40类的静态成员分为 ()
6、和()。41运算符重载要求保持其原来的操作数个数、 42通过关键字 ( )可以声明模板,通过关键字 43?请列出 C+中两种用户自定义的数据类型: 44 . 构造函数的作用是()。+ ”重载为类的成员函 数),而对象则是类的 ()。)和(),如果不加说明,则默认的继)、()、)把这个公共基类声明为虚基类。)。A 的声明中加入语句 ()和语法结构。)指定函数模板的类型参数。 )、()。1.继承机制的作用是()A)信息隐藏B)数据封装C) 定义新类D) 数据抽象2.类的析构函数的作用曰是,是( )A)一般成员函数B)类的初始化C) 对象的初始化D) 删除对象创建的所有对象3.类的析构函数是在()调
7、用的。A)类创建时B)创建对象时C) 删除对象时D) 不自动调用.(设类名为 ClassName) 的形式为 (45 . 后置自增运算符“二、单选题)。4在 ( )情况下适宜采用 inline 定义内联函数。A) 函数体含有循环语句C) 函数代码少、频繁调用B) 函数体含有递归语句D) 函数代码多、不常调用5 ?如果类 A 被说明成类 B 的友元,则 ()A) 类 A 的成员即类 B 的成员B) 类 B 的成员即类 A D)类 B 不一定是类 A 的友元的成员C)类 A 的成员函数不得访问类B 的成员A) 参数B) 访问权限C) 操作D) 标识符7.在公有继承的情况下,基类成员在派生类中的访问
8、权限 ( )A) 受限制B) 保持不变C) 受保护D) 不受保护&在 C+类体系中 ,不能被派生类继承的有( )A) 转换函数B) 构造函数C) 虚函数D) 静态成员函数9.假定 ClassN 为一个类,则执行“ ClassNx; ”语句时将自动调用该类的( )A) 有参构造函数B) 无参构造函数C) 拷贝构造函数D) 赋值构造函数10. C+ 语言建立类族是通过 ( )A) 类的嵌套B) 类的继承C) 虚函数D) 抽象类6 .在类中声明转换函数时不能指定 ()11. 重载一元运算符 -为类 A 的成员运算符,若有类A) obj.operator - ( )B) operator - (obj
9、)A 的对象 obj ,则表达式 -obj 被 C+编译器解释 为( ) C) obj:operator - ( ) D) obj:operator - ( )12 ?以下有四种关于类的说法,其中不正确的是A) 构造函数可以指定参数,但不能指定函数类型()。B) 一个类可以有多个构造函数D) 一个类只能有一个析构函数13.面向对象程序设计讲求封装性,在C+中封装是借助于 () 实现的A) 结构 B) 数组 C) 类D) 函数14. 下面有四种关于类的说法,其中不正确的是()C) 析构函数不可以指定参数,但可以指定函数类型精品文档A) 一个类可以有多个构造函数C) 一个类只能有一个析构函数 15
10、 下列有关 基类的叙述中不正确的是A) 基类的公有成员在派生类中仍然是公有的C) 基类的私有成员在派生类中仍然是私有的16以下有四种关于友元的描述,其中错误的 是B) 析构函数不可以指定函数类型,但可以指定函数参数D) 在一个类中可以说明其它类的对象 ),前提为“公有 派生” 。B) 基类的保护成员在派生类中仍然是保护的D) 基类的私有成员在派生类中是不可访问 的 ) 。A) 类 A 的友元类 B 的成员函数都是类 A 的友元函数 B) 友元函数可以访问该类的私有数据成员 C) 类 与类之间的友元关系可以继承 D) 友元可以提高程序的运行效率 17C+ 的封装性是借助于 ( )实现的。 A)
11、函数 B) 数组 C) 结构 D) 类18要将 -重载为类 ClassN 的后置友元运算符,那么,要在类中添加的原型说明为( )。C) friend ClassN operator - (int); 19 在公 有派生时,下列描述中不正确的是 A) 派生 类的对象可以赋给基类的对象D) friend ClassN operator - ( ); ( ) 。C) 派生类的对象可以初始化基类的引用D) 当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员访问属性的叙述中,不正确的是A) 基类的保护成员在私有派生类中是私有的C) 基类的保护成员在保护派生类中是保护的三、程序改错题 (
12、改正下列类中的错误 )B) 派生类对象的地址可以赋给指向基类的指针20以下关于继承成员的( )。B) 对基类成员的访问必须没有二义性D) 基类的保护成员在派生类中是保护的A) friend ClassN operator - (ClassN &, int); B) friend ClassN operator - (ClassN &)1class ClassN private: int nmember;ClassN pmember;public: ClassN( ); intClassN(int x);2void main()char c = new char 20; delete c; 3c
13、lass MyClass private:int n=1; MyClass pO; public: MyClass(int a = 0);void MyClass(int a);#include using namespace std; void main()4精品文档int & par = new int 6; delete par;cout 主函数 End! endl; 5#include using namespace std;void main()long & par = new long 9;delete par;cout 主函数 End! Endl;6CLass CNprivate
14、:long n; CNpobj;public:CN(); voidCN(int X);四、分析程序输出题1#include using namespace std;class A public:A() coutconstructing A endl; A() coutdestructing A endl;class B: public Apublic:B() coutconstructing B endl; B() coutdestructing B endl;class C : public B public:C() coutconstructing C endl;C() coutdestr
15、ucting C endl;void main()C c1; 2#include using namespace std; void fun(int &a, int &b) int p; p=a; a=b; b=p;void exchange(int &a,int &b,int &c)精品文档if(ab) fun(a,b); if(ac) fun(a,c); if(bc) fun(b,c);void main()int a=12,b=89,c=56; exchange(a,b,c); couta=a,b=b ,c=cendl;3#include class TC private:int num
16、;public:TC();int TEST() return num; TC();TC:TC() num=0; TC:TC() coutDestructor is activeendl; void main()TC tarr5; coutExiting mainendl;4#include class CBaseprivate: int n;public: CBase(int m = 0) n = m; virtual void print( ) cout Inside CBase n endl; ;class CDrive: public CBase private: int n;publi
17、c: CDrive( ) n = 0; CDrive(int a, int b) : CBase(a) , n(b) void print( ) cout Inside CDrive n print( ); pb = &b2; pb-print( ); pb = ⅆ pb-print( ); pb-CBase:print();5#include class CTest private: long num; public:精品文档CTest( );CTest( );CTest:CTest( ) num = 0; CTest:CTest( ) cout 调用析构函数 endl; void m
18、ain( )CTest cobj;cout 退出主函数 endl;6#include class CNprivate: int n;public: CN(int i) n=i; operator int() return n; ;void main()CN cobj(123); coutcobjendl;7#include void main( )int num = 100;int & ref = num; cout ref endl;ref = ref + 100; cout num endl;num = num + 100;cout ref endl;8#include class CNa
19、me private: long num; public: CName( );CName( );CName:CName( ) num = 0; CName:CName( ) cout 调用析构函数 endl; void main( ) CName carr2;cout 退出 main endl; 9分析下列程序并写出程序的运行结果。#include class CBase private: int n;public: CBase(int m = 0) n = m; virtual void print( ) cout Inside CBase n endl;class CDrive: publ
20、ic CBase private: int n;精品文档public: CDrive( ) n = 0; CDrive(int a, int b) : CBase(a) , n(b) void print( ) cout Inside CDrive n print( ); pb = &bb;pb-print( ); pb = ⅆpb-print( ); pb-CBase:print();10#include class CTprivate: int n;public: CT(int i) n=i; operator int() return n; ;void main()CT cObj(
21、1234); coutcObjendl;五、编程题1 下列类成员函数的定义不完整,请在 class 处填代码以使其完整。TC private:int num;float x;public:TC(int, float);TC(TC&);TC:TC(int n, float f)num = n;TC:TC(TC& t) x = t.x;2根据下面的主程序,完成类说明的最小形式(不要求实现成员函数的定义 ) 。#include class Baseprivate: ;public: ;; void mai n() Base bo( 6);3. 一个类的头文件如下所示,程序产生对象 tco, 且 tc
22、o.num=10 ,并使用 Show() 函数输出这个对象 的值。/tcn.h精品文档class TCN private: int num;public: TCN(i nt n) num=n; void Show () cout num e ndl; ;#in clude#i nclude tc n.hvoid mai n()4 . 完成下面类中的成员函数的定义( 在 _ 处填写适当的内容 )class CTNprivate: int men;float mef;public: CTN(int, float);CTN(CTN &);CTN:CTN( ) men = a;=b;CTN:CTN(
23、rObj ) men = ;mef = _ .mef;5 ?在处填写适当内容,以便完成下列类成员函数的定义。 class CNprivate: int mn;float mf;public: CN(i nt = 0, float = 0);CN(CN &);CN:CN( ) this- mn = mn; = mf;CN:CN( rObj )mn = _ ;mf = _ .f;6 ?填上合适的字句,使程序的最终结果为200 。#i nclude class CNumberprivate: int val;精品文档public: CNumber(i nt i) val=i; int();CNumb
24、er:operator in t() class num : public CNumber public:num(int i) : CNumber(i) ;void mai n()num n(100);int i=n; couti+nen dl;7 ?下面是一个类的测试程序,设计出能使用如下测试程序的类: void mai n()Test to;to.Init(300, 200);to.Pri nt();输出结果: 300-200=100&已知复数类 Complex 的声明如下:class Complexpublic:Complex();Complex(double);Complex(doub
25、le, double);friend Complex operator + (Complex &, Complex &);friend ostream & operator (istream &, Complex &);private:double real, imag;要求:(1)写出该类的所有构造函数的类外定义代码。写出对运算符“ + ”、“ ”进行重载的运算符重载函数的定义。精品文档9下列 AbstractC 类是一个表示形状的抽象类, area( )为求图形面积的函数, total( )则是一个通用的用 以求 不同形状的图形面积总和的函数。class AbstractCpublic:v
26、irtual double area()=0;double total(AbstractC *sa , int n)double s=0.0;for(int i=0; iarea( );return s;要求:(1) 从 AbstractC 类派生圆类 ( Circle) 、正方形类 (Square) , 圆类新增数据成员半径 (r), 正方形类新增数据 成员边 长 (a) ,圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。(2) 写出 main( )函数,计算半径为 3.5 的圆和边长为 7.9 的正方形的面积和 (必须通过调用 total 函数计 算)。10 一个类的头
27、文件 cn.h 的内容如下所示:/cn.h#include class CNprivate: int n;public: CN(int);void Print();CN:CN(int N) n = N; void CN:Print() coutnendl; (1) 编写一个主程序,产生对象 Obj,且使 Obj 对象中的 n 成员的值为 100 ,并使用 Print()函数输出这 个对象中 私有成员 n 的值。(2) 在主程序中,创建一动态对象,使该动态对象的数据成员值为2015 ,并使用指针 pObj 指向该动 态对象,然后输出该动态对象的数据成员的值。11 一个类的头文件CT.h 的内容如
28、下所示:/CT.h#include using namespace std;class CTprivate: int m;public: CT(int);void ShowM();CT:CT(int n) m = n;精品文档void CT:ShowM() coutmendl; (1) 编写一个主程序,产生对象 mObj ,且使 mObj 对象中的 m 成员的值为 11 ,并使用 ShowM() 函数 输出这 个对象中私有成员 m 的值。(2) 在主程序中,创建一动态对象,使该动态对象的数据成员值为126 ,并使用指针 pObj 指向该动态对象,然后输出该动态对象的数据成员的值。12使用运行时
29、多态性编程实现三角形、矩形和圆的总面积的统计并输出结果。三角形、矩形和圆类 的类名分别为 T、R和 C。T类必须以 S类作基类, R类必须从 T类派生, C类必须以 S作基类。 Shape 类的定义如下:class Sprivate: int x, y;public: S(int a=0, int b=0) : x(a) , y(b) virtual int Area() = 0;不必建立工程, 将所有代码都放在一个源文件中。 在主函数中, 必须调用下列 Sum 函数来统计各类图 形面 积的总和。int Sum( S * s, int n)int sum = 0;for(int i = 0;
30、i Area();return sum;精品文档参考答案一、填空题1继承性2成员3 virtual4 virtual5成员6友元7 const8 const9 调用类成员函数的10 ClassName(ClassName &);11 私有 公有 保护 私有12 虚基类 构造13 static14415 函数重载 虚函数16 函数重载 虚函数17 class18 template19320 try-catch21 private public protected private22异常23 inline24 friend25虚基类26原型声明27 const28 基类 指针 对象29 virtu
31、al double virfun( )=0;30 static31原型32 ClassN(ClassN &);33 纯虚函数 对象 指针34 operator 主函数 End! endl; ” “cout 主函数 End! endl;5“ long & par = new long 9; ” “ long * par = new long 9; ”“ delete par; ” “ delete par; ”“ cout 主函数 End! Endl; ” “ cout 主函数 End! mf CN & rObj.n 6operator return val7 class Testprivate
32、: int x,y;public: void Init(int a, int b) x=a; y=b; 精品文档void Print( ) coutx-y=x-yendl;8Complex:Complex() real = 0; imag = 0;Complex:Complex(double r) real = r; Complex:Complex(double r,double i) real = r; imag = i; Complex operator + (Complex & c1, Complex & c2)Complex c;c.real = c1.real + c2.real;
33、c.imag = c1.imag + c2.imag; return c;ostream& operator (ostream& output,Complex& c) output ( c.real + c.imag i) (istream& input, Complex& c) cout c.real c.imag;return input; 9#include using namespace std;class AbstractC public: virtual double area() = 0;double total(AbstractC *sa, int n) double s=0.0; for(int i=0; iarea( ); return s;精品文档 private: double r;class Circle : public AbstractCpublic: Circle(double R = 0.0) r = R; void SetR(double R) r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保自卸车租赁合同范本
- 绿化垃圾清运合同协议书
- 空乘解除合同协议书范本
- 江苏充电桩转让合同范本
- 海外团队游学服务协议书
- 汽车个人租赁合同协议书
- 经济合同敬业协议书模板
- 热处理长期加工合同范本
- 电梯门装修工程合同范本
- 砖厂废铁价转让合同范本
- 3C认证全套体系文件(手册+程序文件)
- 木工三级安全教育试卷
- 中学田径基础校本课程教材
- 永能选煤厂生产安全事故应急救援预案
- 河北省邯郸市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 浙江省建设领域简易劳动合同(A4版本)
- 城市规划原理课件(完整版)
- 浙江省本级公务车辆租赁服务验收单(格式)
- 糖代谢紊乱的实验诊断
- 400T汽车吊主臂起重性能表
- 大信审计执业问题解答-存货监盘审计指引
评论
0/150
提交评论