国家二级C++机试(类和对象)模拟试卷18
选择题
1.有如下类定义:
class Foo
{
public:
Foo(int v):value(v){} //①
-Foo(){} //②
private:
F00(){} //③
int value=0; //④
};
其中存在语法错误的行是( )。(D)
A. ①
B. ②
C. ③
D. ④
解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。
2.有如下类定义:
class Test
{
public:
Test(){a=0;c=0;} ∥①
int f(int a) bonst{this->a=a;} //②
static int g (){return a;} //③
void h(int b){Test::b=b;}; //④
private:
int a;
static int b:
const int c;
};
int Test::b=0;
在标注号码的行中,能被正确编译的是( )。(D)
A. ①
B. ②
C. ③
D. ④
解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初始化列表中进行,故选项A错误;常成员函数不能更新对象的数据成员,故选项B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,故选项C错误。
3.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有公有、保护和私有三种。故本题选B。
4.下列关于类定义的说法中,正确的是( )。(A)
A. 类定义中包括数据成员和函数成员的声明
B. 类成员的缺省访问权限是保护的
C. 数据成员必须被声明为私有的
D. 成员函数只能在类体外进行定义
解析:此题考查的是类的定义。类中缺省的访问权限是私有的,所以选项B错误:类的数据成员和成员函数的访问控制权限均可被声明为公有、私有和保护中的一种,所以选项C错误:成员函数的实现可以在类体内定义,也可以在类体外定义,所以选项D错误。
5.如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是( )。(D)
A. public和public
B. public和protected
C. protected和public
D. protected和protected
解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。
6.下列运算符函数中,肯定不属于类Value的成员函数的是( )。(B)
A. Value operator+(Value);
B. Value operator-(Value,Value);
C. Value operator*(int);
D. Value operator/(Value);
解析:运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。
7.有如下程序:
#include<iostream>
#include<cstring>
using namespace std;
class XCD {
char*a;
int b;
public:
XCD(char*aa,int bb){
a=new char[strlen(aa)+1];
strcpy(a,aa);
b=bb;
}
char*Geta(){return a;}
int Getb0{ return b;}
};
int main(){
char *p1=’’abcd’’,*p2=’’weirong’’;
int d1=6,d2=8;
XCD x(p1,d1),y(p2,d2);
cout<<strlen(x.Geta())+y.Getb()<<end1;
return 0;
}
运行时的输出结果是( )。(A)
A. 12
B. 16
C. 14
D. 11
解析:由类XCD的定义可知,成员函数Geta()返回的是字符串的长度,Getb()返回的是参数b的值。在主函数中strlen(x.Geta())的值等于4,y.Getb()的值等于8,所以输出两者的和为12。
8.有如下两个类定义:
class AA{};
class BB{
AA v1,*v2;
BB v3;
int *v4;
};
其中有一个成员变量的定义是错误的,这个变量是( )。(C)
A. vl
B. v2
C. v3
D. v4
解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。
9.有如下程序:
#include<iostream>
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle{
本文档预览:3600字符,共7966字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载