1、国家二级 C+机试(类和对象)模拟试卷 11及答案与解析 一、选择题 1 有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0): n(i) void setValue(int n0; ; 下列关于 getValue成员函数的实现中,正确的是 ( )。 ( A) ( B) ( C) ( D) 2 下列关于类定义的说法中,正确的是 ( )。 ( A)类定义中包括数据成员 和函数成员的声明 ( B)类成员的缺省访问权限是保护的 ( C)数据成员必须被声明为私有的 ( D)成员函数只能在类体外进行定义 3 下列运算符函数中,肯定不属于类 Value的成
2、员函数的是 ( )。 ( A) Value operator+(Value); ( B) Value operator-(Value, Value); ( C) Value operator*(int); ( D) Value operator (Value); 4 有如下程序: #include 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 Point center; int radiu
3、s; public: Circle(int cx, int cy, int r): center(cx, cy), radius(r) int get()return center get()+radius; ; int main() Circle c(3, 4, 5); cout using namespace std; class Pair int m, n; public: Pair(int j, int k): m(j), n(k) int get()return m; ) int get()constreturn m+n; ; int main() Pair a(3, 5); con
4、st Pair b(3, 5); cout #include using namespace std; class MyClass public: MyClass()cout using namespace std; class Part public: Part(int x=0): val(x)cout #include using namespace std; class XCF int a; public: XCF(int aa=0): a(aa)coutGeta(); delete pd; return 0: ) 运行时的输出结果是 ( )。 ( A) 1215588 ( B) 121
5、8855 ( C) 12185 ( D) 128512 13 有如下程序: #include using namespace std; class Toy public: Toy(char*_n)strcpy(name, _n); count+; Toy()count-; char*GetName0return name; static int getCount()return count; private: char name10; static int count; ; int Toy: count=0; int main() Toy t1(“Snoopy“), t2(“Mickey“),
6、 t3(“Barbie“); cout using namespace std; class MyClass public: MyClass () cout #include using namespace std; class MyString public: char str80; MyString(const char*s)strcpy(str, s); MyString&operator+=(MyString a) strcat(str, a str); return*this; ; ostream&operator using namespace std; class Obj sta
7、tic int i; public: Obj()i+; Obj()i-; static int getVal()return i; ; int Obj: i=0; void f()Obj ob2; coutgetVal(); delete ob3; coutgetPI();和 coutgetPI();和 coutgetPI(); ( D) cout using namespace std; int i=1; class Fun public: static int i; int value()return i-l; int value()constreturn i+1; ; int Fun:
8、i=2; int main() int i=3; Fun fun1; const Fun fun2; _ return 0; 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是 ( )。 ( A) couta=a; 第 2行 void g(char b)this-b=b; 第 3行 char h() constreturn a; 第 4行 ; 编译时没有错误的行是 ( )。 ( A)第 1行 ( B)第 2行 ( C)第 3行 ( D)第 4行 26 有如下程序: #include #include using std: cout; class Point public: friend
9、 double distance(const Point&p); p距原点的距离 Point(int xx=0, int yy=0): x(xx), y(yy) private: int x, y; ; aouble distance(const Point&p) return sqrt(p x*p x+p y*p y); int main() Point p1(3, 4); coutGeta()的功能是输出 8;语句 delete pd;调用析构函数 XCF(),输出 8;当退出程序时,分别释放对象 d2、 d1,输出 55。 【知识模块】 类和对象 13 【正确答案】 C 【试题解析】 类
10、 Toy中包含一个字符数组 name和一个静态整型变量 count。在程序中首 先给类 Toy的成员 count的赋初始值 0,然后在主函数中,定义了三个Toy对象 t1、 t2、 t3,并分别对它们的 name字段赋值,在赋值的同时变量 count的值加 1,所以最后变量 count的值等于 3。 【知识模块】 类和对象 14 【正确答案】 C 【试题解析】 语句 MyClass a4, *p5不仅定义了 4个 MyClass对象,分别为a0, a1, a2, a3,而且定义了 5个指向 MyClass对象的指针变量,分别为*p0, *p1, *p2, *p3, *p4, 所以共调用 MyC
11、lass的构造函数 4次。 【知识模块】 类和对象 15 【正确答案】 A 【试题解析】 一般情况下,析构函数在对象的生存周期即将结束的时候由系统自动调用。在调用完成之后,对象也就消失了,相应的内存空间也被释放。析构函数没有参数,因此析构函数不能重载,一个类中只能定义一个析构函数。 【知识模块】 类和对象 16 【正确答案】 C 【试题解析】 程序在执行时,先创建类对象 a,输出 *,再创建类对象 b,输出#,然后再依次调用类对象 b和 a的析构函数,输出两个 。 【知识模块】 类和对象 17 【正确答案】 D 【试题解析】 在类 MyString中,定义了带参数的构造函数 MyString(
12、const char*s),其作用是把 s指向的字符串拷贝到字符组 str中。在类中还对运算 +=进行重载定义,其作用是把字符串 str和 a相连接并赋给 str,所以在主函数中执行x+=y时,结果为 abccde。 【知识模块】 类和对象 18 【正确答案】 B 【试题解析】 this指针是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针知道自己属于哪一 个对象。 this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确的地表示出了成员函数当前操作的数据所属的对象。 【知识模块】 类和对象 19 【正确答案】 D 【试题解析】 此题考查的是静态成员。本题中, O
13、bi类定义了一个静态数据成员i,并初始化为 0在主函数中,首先定义了 1个该类对象 ob1,所以构造函数被调用 1次, i加 1;然后调用函数 f(),该函数中又定义了一个对象 ob2,此时 i再次加 1变为 2,然后通过函数 getval()输出 i的值 2。 f()函数结束, ob2变量被释放,故析构 函数被调用了 1次, i变成 1;回到主函数中,又动态创建了 1个对象并让0b3指向它,此后 i变成 2并输出。最后释放动态创建的对象 i变为 1,输出 1。故最终的输出结果是 221。 【知识模块】 类和对象 20 【正确答案】 D 【试题解析】 此题考查的是静态成员函数的引用。 getP
14、I()是类 Constants的静态成员函数。引用静态成员函数可以有两种形式:一是通过类名直接进行调用,例如类名:静态成员函数名;另一种是用类的任何对象名进行调用其作用仅是通过对象名间接的指出类名,例如 constants getPI()选项 D即是这种调用方式。 【知识模块】 类和对象 21 【正确答案】 D 【试题解析】 funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非静态成员,即 cout()const;,所以对于本题来说无参且无返回值的常成员函数 show,其正确的函数原型是选项 C。 【知识模块】 类和对象 25 【正确答案】 D 【试题解析】 类 Test中的常成员函数 h()返回数据成员 a的值。 【知识模块】 类和对象 26 【正确答案】 A 【试题解析】 这段程序是正确的,计算 p距离原点的距离。语句 是类 Point的构造函数,在构造函数中给变量 xx和 yy赋初值 0。语句 是计算点 p距原点的距离的函数 distance。语句 是计算点 p1距离原点的距离并输出。 【知识模块】 类和对象 27 【正确答案】 C 【试题解析】 在选项 C中定义了类 MyClass对象数组 arrays2,并用对象MyClass(5)和 MyClass(6)对这个数组中的两个元素赋初值。 【知识模 块】 类和对象