《c++复习题.pdf》由会员分享,可在线阅读,更多相关《c++复习题.pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+复 习 题一、选择题:1、关于C+与 C语言的关系的描述中,()是错误的。A.C语言是C+的一个子集 B.C语言与C+是兼容的C.C+对 C语言进行了一些改进 D.C+和 C语言都是面向对象的2、C+程序从上机到得到结果的几个操作步骤依次是()。A.编译、编辑、连接、运行 B.编辑、编译、连接、运行C.编译、运行、编辑、连接 D.编辑、运行、编辑、连接3、有关C+编译指令,以下叙述正确的是()A.C+每行可以写多条编译指令B.i n c lu d e指令中的文件名可含有路径信息C.C+的编译指令可以以#或开始D.C+中不管#i f 后的常量表达式是否为真,该部分都需要编译4、与 C语言p
2、r i n t f (Hello,Wo r ld n);语句功能相同的C+语 句 是()A.c o u t z/Hello,Wo r ld n/z;B.c o u t?/Hello,Wo r ld n/z:D.c i n p=5C.A l.*p=5D.*A 1.p=525、dI I f u n(i n t)是类t e s t 的公有成员函数,p是指向成员函数f u n()的指针,采用()是正确的:A.p=f u n B.p=t e s t:f u n()C.p=f u n()D.p=t e s t:f u n26、假定A A 为一个类,a为该类公有的数据成员,p x 为指向该类对象的一个指针,
3、则访问p x 所指对象中数据成员a的格式为()oA.p x(a)B.p x a C.p x-a D.p x.a27、假 定 AB为一个类,则 执 行 A B *s=n e w A B(a,5);”语句时得到的一个动态对象为()。()。A.s B.s-a C.s.aD.*s28、29、30、31、假定A B 为一个类,贝 N)为该类的拷贝构造函数的原型说明。A.A B(A B x);B.A B(A B&x);C.v o i d A B(A B&x);D.A B(i n t x);对于任个类,用户所能定义的构造函数的个数至多为()A.0 B.1 C.2 D.任意个对于任一个类,用户所能定义的析构函
4、数的个数至多为()。A.0 B.1 C.2 D.任意个假定A B 为一个类,则 执 行“A B a,b(3),*p;”语句时共调用该类构造函数的次数为A.2 B.3C.4 D.532、假定A B 为一个类,则 执 行“A B x;”语句时将自动调用该类的(晨A.带参构造函数 B.无参构造函数C.拷贝构造函数 D.赋值重载函数33、(A.)不是构造函数的特征构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置缺省参数D.构造函数必须指定类型说明34、()是析构函数的特征。A.一个类中只能定义一个析构函数B.析构函数与类名不同C.析构函数的定义只能在类体内D.析构函数可以有各个或多个
5、参数。35、若有如下类定义,则下列关于输出结果叙述正确的是()c l a s s S(i n t x;p u b l i c:S()x=0;S(i n t a)x=+a;v o i d s h o w()c o u t x=x e n d l;);v o i d m a i n()(S s l=100;s i.s h o w();)A.有语法错 B.x=100 C.x=101 D.x=036、下述静态数据成员的特征中,()是错误的。A.说明静态数据成员时前边要加修饰符s t a t i cB.静态数据成员要在类体外进行初始化C.引用静态数据成员时.,要在静态数据成员名前加 类名 和作用域运算符
6、D.静态数据成员不是所有对象所共用的37、下面关于静态成员的描述中,正确的是()。A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象访问38、静态成员函数没有()。A.返回值C.指针参数39、静态成员函数对类的数据成员访问(A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员B.t h i s 指针D.返回类型)。D.可允许是静态数据成员或非静态数据成员40、关于n e w 运算符的下列描述中,()是错误的。A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算
7、符d e l e t e 删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值41、下列关于运算符重载的描述中,正确的是()。A.可以改变运算符的目数 B.可以改变运算符的优先级C.可以改变运算符的结合性 D.可以改变运算符的功能42、下列()运算符能被重载。A.:B.?:C.D.%43、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。A.作为友元函数重载的1 元运算符B.作为成员函数重载的1 元运算符C.作为友元函数重载的2 元运算符D.作为成员函数重载的2 元运算符44、如果表达式a=b 中 的“=”是作为普通函数重载的运算符,若采用运算符函数调用
8、格式,则可表示为()。A.a.o p e r a t o r=(b)B.b.o p e r a t o r=(a)C.o p e r a t o r=(a,b)D.o p e r a t o r (b,a)45、关于运算符重载,下列说法正确的是()。A.重载时,运算符的优先级可以改变。B.重载时,运算符的结合性可以改变。C.重载时,运算符的功能可以改变。D.重载时,运算符的操作数个数可以改变。46、一个类的友元不是该类的成员,与该类的关系密切,所 以 它()。A.有 t h i s 指针,有默认操作的对象B.没有t h i s 指针,可以有默认操作的对象C.有 t h i s 指针,不能执行默
9、认操作D.没有t h i s 指针,也就没有默认操作的对象47、友元关系不能()。A.继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系I).提高程序的运行效率48、下列叙述正确的是()。c l a s s Si n t n;p u b l i c:S(i n t m )n=m;f r i e n d v o i d s q u a r e (S&s)/A s.n=s.n+s.n;/B);A.A行代码有错C.A行和B行都有错49、外部函数中派生类的对象对它的基类成员中A.公有继承的公有成员C.公有继承的保护成员5 0、在公有派生情况下,有关派生类对象和基类B.B行代码有错D.A行和B
10、行都没错()是可以访问的。B.公有继承的私有成员D.私有继承的公有成员寸象的关系,不正确的叙述是()oA.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员I).派生类的对象的地址可以赋给指向基类的指针5 1、要将类A说明是类B的虚基类,正确的描述是()A.c la s s vi r t u a l B:p u b li c A B.c la s s B:vi r t u a l p u b li c AC.vi r t u a l c la s s B:p u b li c A D.c la s s B:p u b li c A vi
11、r t u a l5 2、C+的继承性允许派生类继承基类的()。A.部分特性,并允许增加新的特性或重定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性5 3、对于保护继承,基类的公有和保护成员在派生类中将()成员。A.全部变成公有 B.全部变成保护C.全部变成私有 D.仍然相应保持为公有和保护5 4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。A.自己所属类、对象成员所属类、基类B.对象成员所属类、基类、自己所属类C.基类、对象成员所属类
12、、自己所属类D.基类、自己所属类、对象成员所属类5 5、当派生类中有和基类一样名字的成员时,一般来说,()。A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员5 6、C+中的虚基类机制可以保证:()。A.限定基类只通过一条路径派生出派生类B.允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类C.当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员D.当一个类多次间接从基类派生以后,其基类只被一次继承5 7、面向对象方法的多态性是指(A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一
13、消息,不同的对象可以以适合自身的方式加以响应D.个对象可以是由多个其他对象组合而成的5 8、下列叙述正确的是()。A.抽象类不能用于创建对象B.纯虚函数是一种特殊的虚函数,它必须有具体的实现C.派生类的虚函数与基类的虚函数需要有不同的形式参数D.虚函数可以是s t a t i c 类型的函数5 9、对于类定义c la s s A p u b li c:vi r t u a l vo i d f u n d ()vo i d f u n c 2();c la s s B:p u b li c A p u b li c:vo i d f u n d ()c o u t c la s s B f u
14、 n c 1 e n d l;vi r t u a l vo i d f u n c 2()c o u t c la s s B f u n c 2 e n d l;);下面正确的叙述是()A.A:f u n c 2()和 B:f u n c l()都是虚函数B.A:f u n c 2()和 B:f u n c l()都不是虚函数C.B:f u n c l()是虚函数,而 A:f u n c 2()不是虚函数D.B:f u n c l()不是虚函数,而 A:f u n c 2()是虚函数6 0、下列关于纯虚函数的描述中,正 确 的 是()A.纯虚函数是一种特殊的虚函数,它是个空函数B.具有纯虚
15、函数的类称为虚基类C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数D.具有纯虚函数的类不能创建类对象二、基本概念填空题1、C+语言程序执行的入口是._ _ _ _ _ _。2、表达式c o u t e n d l还可表示为。3、NUL L 是一个符号常量,通常作为空指针值,它的具体值为 o4,静 态 字 符 型 变 量 的 缺 省 初 值 为。5、在 C+中,函数参数传递方式有三种,分别是传值传递、传递和 传递。6、函数重载是指函数的 不同。7、定 义 内 联 函 数 的 方 法 是 在 函 数 的 返 回 值 类 型 前 面 加 关 键 字。8、定义个函数模板要用到的第个修饰符是
16、o9、已知 i n t c u b i n(i n t n)r e t u r n n*n*n;和 d o u b l e c u b i n (d o u b l e n)r e t u r n n*n*n;是 一 个 函 数 模 板 的 两 个 实 例,假 定 类 型 参 数 用 T 表 示,则该函数模板的定义是1 0、如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的_ _ _ _ _ _ _ _ 部分。1 1、执 行 i n t p=n e w i n t 操作得到的一个动态分配的整型对象为_ _ _ _ _ _ _ _。1 2、执 行 i n t *p=n e w i n
17、t 1 0 操作,使 p指向动态分配的数组中下标为0 的元素,该元素可表示为_ _ _ _ _ _ _ 或1 3、执行 操作将释放由p 所指向的动态分配的数组空间5、面向对象程序设计的四大特性是封装性、重载性、和。1 4、每 个 对 象 都 是 所 属 类 的 一 个.1 5、对象将其大部分实现细节隐藏起来,这种机制称为1 6、若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上 和两个冒号分隔符。1 7、假定A A 是一个类,“A A*ab c();”是该类中一个成员函数的原型,则在类外定义时的函数头为1 8、若 采 用 x.ab c(y)表达式调用一个成员
18、函数,在成员函数中使用的_ _ _ _ _ _ _ _ 就代表了类外的x 对象。1 9、为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上 关键字。2 0、一个类的 函数实现对该类对象的初始化功能。2 1、假定一个类对象数组为A N,当离开它的作用域时,系统自动调用该类析构函数的次数为_ _ _ _ _ _ _ _=2 2、.假定用户为类A B 定义了一个构造函数“A B(i n t aa=O):a(aa),则定义该类的对象时,可以有 种不同的定义格式。2 3、假定用户只为类A B 定义了一个构造函数“A B(i n t aa,i n t b b=0)
19、a=aa;b=b b;”,则定义该类的对象时,其实参表中至少带有 个实参。2 4、假定A为一个类,则语句A (A&x);是此类_ _ _ _ _ _ _ _ 构造函数的原型说明。2 5、A是一个类,已有语句“A*p;p=n e w A 10 要释放由p指向的动态空间,正确的语句应该是2 6、类型转换函数没有 类型,而且参数表为2 7、重载运算符时,该运算符的 _、结合性以及操作符的个数不允许改变。2 8、重载插入运算符时,其 运 算 符 函 数 的 返 回 值 类 型 应 当 是。2 9、在 C+中,运算符的重载有两种实现方法,一种是通过成员函数实现,另一种则通过_ _ _ _ _ _ _ _
20、 实现。30、类 A 的后置自增运算符+以成员函数的形式进行重载,其在类内的函数声明是31、C+语言中的友元函数提供了在类外访问类中的私有成员和保护成员的功能,但破坏了类的32、如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A 中加入语句33、类继承中,缺 省 的 继 承 方 式 是。34、如果一个派生类的基类不止一个,则这种继承称为。35、若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以 的方式直接继承它。36、如果一个派生类只有一个唯一的基类,则 这 样 的 继 承 关 系 称 为。37、所谓赚值兼容规则是指在公有派生情况下,一个 类的对象可以作为
21、 类的对象来使用的地方。38、基 类 的 保 护 成 员 通 过 私 有 派 生 其 在 派 生 类 中 的 访 问 权 限 是。39、引进虚基类的根本目的是为了消除_4()、C+支持两种多态性:一 _ _ _ _ _ 时的多态性和 时的多态性。41、在 C+中,编译时的多态性是通过 实现的,而运行时的多态性则是通过_ _ _ _ _ _ _ _ _ _ 实现的。42、在 C+中,异常超脱于函数机制,其使用的三部曲为:框定异常(try 语句块)、和_ _ _ _ _ _ _。43、假定AA是一个类,AA*abc()const;”是该类中一个成员函数的原型,在该函数体中(能 够/不 能 够)向*
22、th is 或其成员赋值。44、带有 的类称为抽象类,它只能作为 来使用。45、在 C+的文件流中,测 试 文 件 是 否 结 束 的 函 数 名 为。46、在 C+中要创建一个文件输入流对象f i n,同时该对象打开文件“Test,tx t”用于输入,则正确的声明语句是.。三、程序填空题1、下面是一个函数模板,用于计算两个向量的和。在下面横线处填上适当字句,完成函数模板定义。#include using namespace std;templateT*f(T*a,T*b,int n)(T*c=;for(int i=0;in;i+)C i=;return c;void main()(int a
23、 5=1,2,3,4,5,b 5=10,20,30,40,*p;P=f(a,b,5);for(int i=0;i5;i+)coutp i endl;)2、在下面横线处填上适当字句,完成类中成员函数的定义。class A(int*a;public:A(int aa=0)a二;用aa初始化a所指向的动态对象A();释放动态存储空间;3、请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:2,14,3#includeusing namespace std;class A(int a;public:A(int i=0)a=i;int Geta()return a;);class BA a
24、;i n t b;p u b l i c:B(i n t i=0,i n t j=0):v o i d d i s pla y ()c o u t a.G e t a O ,b e n d l;);v o i d m a i n()B b 2 =B(1,2),B(3,4);f o r(i n t i=0;i 2;i+)_ 14、请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。#i n c lu d e u s i n g n a m e s pa c e s t d;c la s s In t e g e r(i n t x;pu b li c:In t e g e r(i
25、 n t a=0)x=a;v o i d d i s pla y()c o u t x e n d l;In t e g e r Ma x (In t e g e r a,In t e g e r b)(if()r e t u r n a;r e t u r n b;)v o i d m a i n()(In t e g e r a(3),b(5),c;c=Ma x (a,b);c.d i s pla y();)5、请在下面的横线处填卜.适当内容,以使类的定义完整。c la s s A r r a y(i n t*pt r;i n t s i ze;pu b li c:A r r a y()s
26、 i ze=0;pt r=0;A r r a y(i n t n)s i ze=n;pt r=n e w i n t s i ze ;A r r a y ()/复制初始化构造函数s i ze=a.s i ze;pt r=n e w i n t s i ze ;f o r(i n t i=0;i s i ze;i+)将源对象的动态数组内容复制到目标对象);6、一种类定义如下:c la s s G o o d spr i v a t e:c h a r g d _ n a m e 2 0 ;i n t w e i g h t;商品名称商品重量s t a t i c i n t t o t a lw
27、 e i g h t;同类商品总重量pu b li c:G o o d s (c h a r*s t r,i n t w)构造函数s t r c py(g d _ n a m e,s t r);w e i g h t=w;t o t a lw e i g h t+=w e i g h t;G o o d s ()t o t a lw e i g h t -=w e i g h t;c h a r*G e t N();返回商品名称i n t G e t W()r e t u r n w e i g h t;G e t To t a l_ W e i g h t()定义静态成员函数返回总重量#i
28、n c lu d e#i n c lu d e c la s s A i n t *a;i n t n;i n t Ma x Le n;pu b li c:A():a(0),n(0),Ma x Le n (0)A(i n t *a a,i n t n n,i n t MM)n=n n;Ma x Le n二MM;i f(n Ma x Le n)e x i t (1);a=n e w i n t Ma x Le n ;;以i为循环变量把a a数组中每个元素值传送给a数组的对应元素中“();i n t G e t Va lu e(i n t i)r e t u r n a i ;函数体返回 a i
29、的值);析构函数的类外定义v o i d m a i n ()(i n t b 1 0 =l,2,3,4,5,6,7,8,9,1 0);A r(b,1 0,1 0);i n t i,s=0;以 i 为循环变量,把 r 对象的a数据成员中的每个元素值依次累加到s中c o u t ,zs=/,s e n d l;8、c la s s A i n t a,b;pu b li c:.定义构造函数,使参数a a 和 b b 的默认值为0,在函数体中用a a 初始化a,用 b b 初始化b);v o i d m a i n ()A *pl,*p2;;调用无参构造函数生成由pl指向的动态对象;调用带参构造函
30、数生成由P 2 指向的动态对象,)使a 和 b 成员分别被初始化为4和 59、c la s s A (i n t a,b;pu b li c:A(i n t a a=0,i n t b b=0)/分另l j 用 a a 和 b b 对应初始化 a 和 b);v o i d m a i n ();定义类A的对象x并用5 初始化,同时定义y并用x初始化;定义p 指针,使之指向对象x)1 0、c la s s A c h a r *a;pu b li c:定义无参构造函数,使 a的值为空A(c h a r *a a)a=;s t r c py(a,a a);用a a 所指字符串初始化a 所指向的动态
31、存储空间定义析构函数,删除a 所指向的动态存储空间;1 1、下列程序第一行输出结果为8,第二行输出结果为1 0,请完善程序。#i n c lu d e u s i n g n a m e s pa c e s t d;c la s s Bi n t a,b;pu b li c:B (i n t a a=O,i n t b b=O )a=a a;b=b b;o pe r a t o r +(B b,i n t x );v o i d s h o w()c o u t a n ”实现字符串类的比较运算,重载构造函数实现字符串对象的初始化。#i n c lu d e#i n c lu d e u s
32、 i n g n a m e s pa c e s t d;c la s s St r i n g c h a r *s t r;pu b li c:St r i n g (c h a r *s=0)i f ()s t r=n e w c h a r ;s t r c py (s t r,s);e ls e s t r=0;)St r i n g(St r i n g&);St r i n g ()i f (s t r)d e le t e s t r;i n t o pe r a t o r (St r i n g&);v o i d Sh o w()i f (s t r)c o u t s
33、 t r,n;);St r i n g I St r i n g(St r i n g&s)i f ()s t r=n e w c h a r ;s t r c py(s t r,s.s t r);e ls e s t r=0;i n t (St r i n g&s)i f(s t r c m p(s t r,s.s t r)0)r e t u r n 1;e ls e r e t u r n 0;v o i d m a i n(v o i d)St r i n g s i(C o m pu t e r),s 2(t e x t s),s 3(s i);s i.Sh o w();s 2.Sh
34、o w();s 3.Sh o w O ;c o u t s 2),X n);1 3、在下面横线处填上适当字句,完成类成员函数的定义。#i n c lu d e u s i n g n a m e s pa c e s t d;c la s s C o m ple x (pr i v a t e:f lo a t r e a l,i m a g;pu b li c:C o m ple x (f lo a t r=0,f lo a t i=0 )r e a l=r;i m a g=i;v o i d D i s pla y()c o u t 0)c o u t/+,/i m a g /i,/;e
35、ls e i f (i m a g 0)c o u t i m a g /,i/,;c o u t e n d l;)C o m ple x o pe r a t o r+(C o m ple x&b );f r i e n d C o m ple x o pe r a t o r-(C o m ple x&a,C o m ple x&b );;C o m ple x C o m ple x:o pe r a t o r+(C o m ple x&b)(C o m ple x *t =n e w C o m ple x (_ _ _ _ _ _ _ _ );r e t u r n *t;)C
36、o m ple x o pe r a t o r-(C o m ple x&a,C o m ple x&b )(C o m ple x *t =n e w C o m ple x (_ _ _ _ _ _ _ _ );r e t u r n *t;)v o i d m a i n ()(C o m ple x c l(4.0,5.0),c 2(2.0,-5.0),c 3;c 3=c l+c 2;c 3.D i s pla y ();c 3=c l-c 2;c 3.D i s pla y ();)1 4、程序构造了一个集合类,其中以整形数组存放集合中的元素。通过重载运算符“*”,实现求两个集合交
37、集的运算,即两个集合的共有元素。例如,设集合a,b分别为:集合 a 二 1,2,3,4,1 5,6,7,8,9,1 0);集合 b=1,2,3,4,5,1 6,1 7,1 8,1 9,2 0);求交集a*b 的结果为1,2,3,4 。通过重载运算符“二”,实现两个集合的赋值运算。#i n c lu d e u s i n g n a m e s pa c e s t d;c la s s s e t i n t x 1 0 ;i n t le n;pu b li c:s e t()f o r(i n t i=0;i 1 0;i+)x i =0;le n=0;s e t(i n t *p,i n
38、 t n)f o r (i n t i=0;i n;i+)x i =*p+;le n=n;f r i e n d s e t o pe r a t o r*(s e t a,s e t b);s e t&o pe r a t o r=(s e t b);i n t g e t Le n()r e t u r n le n;v o i d s h o w(i n t n)f o r(i n t i=0;i n;i+)c o u t x i ,tf;);s e t o pe r a t o r*(s e t a,s e t b)s e t t;i n t k=0;f o r (i n t i=0;
39、i a.le n;i+)f o r (i n t j=0;j b.le n;j+)i f (a.x i =b.x j )=a.x i ;b r e a k;)_ _ _ _ _=k;r e t u r n t;)s e t&(s e t b)f o r (i n t i=0;i b.le n;i+)x i =b.x i ;le n=b.le n;)v o i d m a i n()i n t a 1 0 =1,2,3,4,5,6,7,8 ;i n t b 1 0 =l,1 2,3,5,8,6,7,1 4,2 9);s e t s e t l(a,8),s e t 2 (b,9),c;c=s e
40、 t l*s e t 2;c.s h o w(_ _ _ _ _ _ _ _);)1 5、下面是类f r a c t i o n (分数)的定义,其中重载的运算符6以分数形式输出结果,例如将三分之二输出为2/3。在横线处填上适当字句。c la s s f r a c t i o n(i n t d e n;分子i n t n u m;分母f r i e n d o s t r e a m&o pe r a t o r (o s t r e a r n f t,f r a c t i o n););o s t r e a m&o pe r a t o r (o s t r e a m&o s,f
41、 r a c t i o n f r)r e t u r n ;)1 6、c la s s P o i n t(pr i v a t e:i n t x,y;pu b li c:P o i n t ()x=y=0;P o i n t(i n t x O,i n t y O)x=x O;y=y O;i n t G e t X()r e t u r n x;i n t G e t Y()r e t u r n y;v o i d P r i n t。c o u t P o i n t(x ,”y )e n d l;;友元函数声明一;友元函数声明;P o i n t o pe r a t o r+(
42、P o i n t&pt,i n t d d)加号操作符重载函数,实现P o i n t类对象与整数加法(P o i n t t e m p二pt;t e m p.x+=d d;t e m p.y+二d d;r e t u r n t e m p;P o i n t o pe r a t o r+(P o i n t&pt l,P o i n t&pt 2)加号操作符重载函数,实现两个P o i n t类对象的加法(P o i n t t e m p=pt l;t e m p.x+=pt 2.x;r e t u r n t e m p;)1 7、在下面程序横线处填上适当的字句,使其输出结果为0
43、,5 6,5 6。#i n c lu d e u s i n g n a m e s pa c e s t d;c la s s b a s e(pu b li c:f u n c()r e t u r n 0;);c la s s d e r i v e d:pu b li c b a s e pu b li c:i n t a,b,c;s e t Va lu e(i n t x,i n t y,i n t z)a=x;b=y;c=z;i n t f u n c()r e t u r n(a+b)*c;);v o i d m a i n O(b a s e b;d e r i v e d d
44、;c o u t b.f u n c(),;d.s e t Va lu e (3,5,7);c o u t d.f u n c(),;b a s e&pb=d;c o u t pb.f u n c()e n d l;)1 8、在下面一段类定义中,D e r i v e d 类公有继承了基类B a s e。需要填充的函数由注释内容给出了功能。cl a ss B a se(pri va te:i n t m em l,m em 2;基类的数据成员pub l i c:B a se(i n t m l,i n t m 2)m em l=m l;m em 2=m 2;)vo i d o utput()c
45、o ut m em l ,*m em 2,;/.);cl a ss D eri ved:pub l i c B a se(pri va te:i n t m em 3;派生类本身的数据成员pub l i c:构造函数,由m l 和 m 2分别初始化m em l 和 m em 2,由m 3初始化m em 3D eri ved(i n t m l,i n t m 2,i n t m 3);输出m em l,m em 2和 m em 3数据成员的值vo i d o utput()(1)_ _ _;co ut m em 3 en dl;)/.);19、为使下列程序输出结果为:Y=l,Y=3,Z=5请在
46、横线处填上适当的字句,以使程序完整。#i n cl ude usi n g n a m espa ce std;cl a ss B pri va te:i n t Y;pub l i c:B(i n t y=0)Y=y;vo i d pri n t()co ut Y=Y ,;);cl a ss D:pub l i c B pri va te:B b;i n t Z;pub l i c:D (i n t x,i n t y,i n t z):B(x),b(y)Z=z;vo i d pri n t();打印基类B中的成员Y二 打E R类成员b中的Y值co ut ,Z=z,Z en dl;);vo
47、i d m a i n ()D d(l,3,5);d.pri n t();)20、为使下列程序输出结果为:A:f()B:f()C:f()请在横线处填上适当的字句,以使程序完整。#i n cl ude usi n g n a m espa ce std;cl a ss A pub l i c:co utV A:f()n”;);cl a ss B:pub l i c A pub l i c:vo i d f()co ut B:f()n;cl a ss C:pub l i c A pub l i c:vo i d f()co ut C:f()n”;);vo i d m a i n O(A a,;B
48、b;C c;P=&a;p-f0;P=&b;p-f();P=&c;p-f 0;)21、请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:N a m e:王小明Gra de:9 0#i n cl ude#i n cl udeusi n g n a m espa ce std;cl a ss P erso n(cha r n a m e 2 0 ;pub l i c:P erso n(cha r*s)strcpy(n a m e,s);vo i d di spl a y()co ut v N a m e:n a m e en dl;);cl a ss Studen t:pub l i
49、 c P erso n(i n t gra de;pub l i c:Studen t(cha r*s,i n t g):gra de=g;vo i d di spl a y()co ut w Gra de:w gra de en dl;);vo i d m a i n()(Studen t s(“王小明”,9 0);s.di spl a y();)22、在下面一段类的定义中,需要填充的函数由注释内容给出了功能。cl a ss P o i n t 定义坐标点类(pub l i c:i n t x,y;点的横坐标和纵坐标P o i n t()x=0;y=0;P o i n t(i n t xO,
50、i n t yO)x=xO;y=yO;i n t X()return x;i n t Y ()return y;vo i d P ri n tP O co ut/zP o i n t:(/,x,,,/y,)/en dl;);cl a ss L i n e:pub l i c P o i n t 利用坐标点类定义直线类pri va te:cl a ss P o i n t ptl,pt2;直线的两个端点pub l i c:L i n e(P o i n t pts,P o i n t pte);构造函数,分别用参数初始化对应的端点do ub l e D x()return pt2.x-ptl.x