第 1 页:单选题 |
第 5 页:程序改错 |
第 6 页:简单应用题 |
第 7 页:综合应用题 |
第 8 页:参考答案 |
21.B。【解析】value作为类的数据成员在引用时可以通过对象来引用,也可以通过域操作符引入类名来限定。由于选项D中P是指针,它对指针变量的赋值方式是错误的。
22.C。【解析】本题考查友元函数的应用。程序中函数square是类sample的一个友元函数,它可以直接访问类sample的所有成员。它的功能是返回类sample的私有数据成员x的平方。所以程序的执行结果是900。
23.B。【解析】调用拷贝构造函数的情况为:一个新对象被另一个已存在的同类型对象初始化;当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数。在函数值返回时形参的生命期结束时它的析构函数被调用;在函数返回一个对象时调用拷贝构造函数。符合以上条件的有:用对象objl来初始化obj3;obj3作为实参被传入;函数fun返回一个对象时;系统用返回值初始化一个匿
名对象时调用了拷贝构造函数。总共调用4次。
24.A。【解析】由主函数main入手,定义外部变量x和y,调用函数add。因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是有效的,即add函数的运算结果为25。
25.B。【解析】函数setfill(charc)用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满,设置的填充符一直有效,直到再次填充字符为止,如题中调用函数setfill(’*’)将填充字符设置为’*’,后又调用函数setfill(’#’)将填充字符设置为’#’。函数setw(intn)用于设置输入/输出宽度.宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出/输入后,宽度设置自动恢复为0,如题中语句以宽度10输出数据“123”后,字符串“OK”的输出宽度就自动恢复为0了。而且题中输出的对齐方式为在输出宽度内左对齐。本题结果为123######OK。
26.D。【解析】C++中,虚基类说明格式为class<类名>:virtual<继承方式><基类名>。其中,virtual是虚基类的关键词。在定义派生类时使用虚基类的说明,写在派生类名的后面。
27C。【解析】本题考查在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数。
28.D。【解析】构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。
29.A。【解析】程序中的TestClassl为TestClass的派生类,主函数main中定义。TestClass对象*P,
TestClassl对象objl,然后P引用0bjl,执行p->who()则是调用基类中的who函数,输出TestClass。
30.A。【解析】本程序设计了一个点类Point,包含了横、纵两个坐标数据x和y,由它派生出了圆类Circle,并加入了新的数据成员,即一个半径r和一个求圆面积的函数成员area。在主函数main中,首先定义了一个圆Circle类的对象c1,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象c1的函数成员area的返回值为314。
31.D。【解析】本题考查指针的使用。在给*P赋值前,指针P并没有指向一个具体的对象。此时可以通过编译,但运行时由于P中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。
32.D。【解析】本题考查类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。
33.B。【解析】本题考查的是对构造函数的掌握,另外++运算符是右结合的,所以在进行输出的时候都是先把原来的输出后再自加1。
34.C。【解析】C++中可以在定义文件流对象的同时打开文件,也可以在定义文件流对象以后用open函数打开文件。可以通过构造函数或open函数的第二个参数,确定文件的打开模式。
35.C。【解析】++是右结合的,所以先赋值为3,最后输出3+1;常成员函数只有常对象才能调用,所以输出2。
36.C。【解析】根据递归调用的含义,当n为2时有fib(o),fib(1),fib(2)被调用,且fib(0),fib(1)时调用结束,共3次。
37.D。【解析】选项A错误,不存在这样的定义方式;选项B定义了一个MyClass类的对象P;选项C是Java的定义方式。
38.C。【解析】本题针对虚基类的定义及特点考查。虚基类的声明为“class<类名>:virtual<继承方式><基类名>”,即本题的A为虚基类。
39.B。【解析】一元或二元运算符函数作为成员函数时,第一操作数就是对象本身,并不出现在参数表中,即第一操作数仅以this指针的形式隐含于参数表中,因此对于一元运算符参数表是空的;而对于二元运算符参数表中只有一个参数,它代表第二操作数。
40.D。【解析】模板形参有typename<参数名>、class<参数名>、<类型修饰><参数名>3种形式,即typename与class通用。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |