欢迎来到天天文库
浏览记录
ID:51225635
大小:75.50 KB
页数:22页
时间:2020-03-10
《C++语言程序设计练习题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.面向对象程序设计中的数据隐藏指的是参考答案为:D A.输入数据必须输入保密口令B.数据经过加密处理 C.对象内部数据结构上建有防火墙 D.对象内部数据结构的不可访问性[解析]输入数据必须输入保密口令和数据经过加密处理都不是面向对象程序设计的特征;对象内部数据结构上也不可能建有防火墙,所以它们都不是面向对象程序设计中所指的数据隐藏。面向对象程序设计系统中的封装单位是对象,对象之间只能通过接口进行信息交流,外部不能对对象中的数据随意地进行访问,这就造成了对象内部数据结构的不可访问性,也使得数据被隐藏在对象中。这就是面向对象程序设计中的数据隐
2、藏所指。2.下列各项中不符合函数重载必须满足的条件的是参考答案为:D A.必须有不同的参数个数 B.对应的参数类型必须不相同 C.A和B必须同时满足 D.A和B只要满足一个即可[解析]我们知道,在同一个作用域中,要实现函数重载必须满足的条件的是:①有不同的参数个数;或者②对应的参数有不相同的数据类型,即①和②中只要有一个满足就可以了。当然两者都满足更好,但这不是必须的。3.下列带缺省值参数的函数说明中,正确的说明是 参考答案为:A A.intFun(intx,inty=2,intz=3); B.intFun(intx=1,inty
3、,intz=3);C.intFun(intx,inty=2,intz); D.intFun(intx=1,inty,intz=3); [解析]在带缺省值参数的函数说明中,正确的说明应该是无缺省值的参数依次排列在参数表的左边,排完无缺省值的参数后,再依次排列带缺省值的参数。从所给出的四个选项来看,只有“intFun(intx,inty=2,intz=3)”符合这条规定,其它的都不符合。4.有如下的对类“CSample”的说明,其中()是错误的。 classCSample{ 参考答案为:A A.inta=23; B.CSample();
4、 public: C.CSample(intval); D.~CSample(); };[解析]在上面对类“CSample”说明中,“CSample()”和“CSample(intval)”是该类重载的构造函数、“~CSample()”是该类的析构函数,这三个语句都是正确的。错误的语句是“inta=23”,因为它违反了在类的声明(不管是引用性声明,还是定义性声明)中都不能以赋值表达式的形式给它的数据成员进行初始化。5.已知类A中的一个成员函数的说明如下: voidSet(A&a); 则该函数的参数“A&a”的含义是 参考答案为:C
5、 A.指向A的指针为a B.将变量a的地址赋给类A C.类A对象引用a用作函数的形参 D.变量A与a按位与后作函数参数[解析]因为A是一个类,所以“A&a”表示a是类A的对象,但因为对象a的前缀了符号“&”,则“&a”表示是类A的对象引用。所以“A&a”的含义是类A对象引用a用作函数的形参。6.若类A和类B的定义如下: classA{ public: inti,j; voidget(); }; classB:privateA{ inti,j; protected: intk; public
6、: voidmake(); }; voidB::make(){k=i*j;} 则其中()是非法的表达式。 参考答案为:D A.voidget(); B.intk; C.voidmake(); D.k=i*j; [解析]对于给定的四项中,前三项都是正确的,只有第四项是错误的。因为,类B是类A的私有派生类(缺省访问类型),所以A中的公类型的数据成员在类B中成为了私有数据成员,但函数“voidB::make()”既然是类B的成员函数,则既可访问类A中的公有数据成员,也能访问类B中的私有数据成员,则表达式“k=i*j;”造成
7、了访问的二义性,即其中的i和j,到底是取自类A呢?还是取自类B呢?7.下面的主程序中,语句()是错误的。 classA{ inti; public: virtualvoidfun()=0; A(inta){i=a;} }; classB{ intj; public: voidfun(){cout<<”B::fun()”;} B(intb,intc):A(b){j=c;} }; voidmain() 参考答案为:A A.{Aa(5); B.A*pa; C.B
8、b(7); D.B*pb; } [解析]在类A中,函数“virtualvoidfun()=0”为纯虚函数,因此,类A为抽象类。
此文档下载收益归作者所有