1、C+程序设计自考题模拟 12 及答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:20,分数:20.00)1.在类中声明的成员可以使用以下哪个关键字进行修饰_(分数:1.00)A.externB.autoC.regusterD.void2.下列关于构造函数的描述中,正确的是_(分数:1.00)A.构造函数不可以设置默认的参数B.构造函数不可以是内联函数C.构造函数在定义类对象时自动执行D.构造函数不可以重载3.用于表明类其后的成员函数属于这个特定类的运算符是_(分数:1.00)AB.-C.:D.void4.在定义一个派生类时,若不使用保留字显式地规定采用何种继承方
2、法,则默认为_方式。(分数:1.00)A.公有继承B.私有继承C.保护继承D.非私有5.类对象的指针可以通过_运算符访问对象的成员。(分数:1.00)AB.-C.:D.void6.下列关于复制构造函数的说法中错误的是_(分数:1.00)A.复制构造函数是一种特殊的构造函数,函数名与类名相同B.若自定义派生类的复制构造函数,那么也必须自定义基类的复制构造函数C.复制构造函数只能有一个参数D.复制构造函数不允许在函数体中使用 return 语句7.运算符_与析构函数一起工作来删除一个动态对象。(分数:1.00)A.deleteB.cutC.clearD.cancel8.下列不属于实例连接的方式的为
3、_(分数:1.00)A.一对一B.一对多C.多对一D.多对多9.下列关于类的描述中,错误的是_(分数:1.00)A.类是一组对象的模板B.类是抽象数据的实现C.类是数据和方法的封装体D.类是对象的实例10.下面哪个关键字不属于修饰类特殊成员函数的关键字_(分数:1.00)A.constB.volatileC.staticD.public11.下述静态成员的特性中,正确的是_(分数:1.00)A.静态成员函数可以利用 this 指针B.静态数据成员要在类体内进行初始化C.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符D.静态数据成员不是所有对象所共有的12.下列关于静态成员函数与一
4、般成员函数的不同点不正确的是_(分数:1.00)A.静态成员是类的成员,不是对象的成员B.静态成员的生成在建立对象之后C.静态成员函数不能被说明为虚函数D.静态成员函数不能直接访问非静态函数13.类的派生和继承是面向对象程序设计方法的重要特征之一,下面关于它的叙述正确的是_(分数:1.00)A.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现14.下面关于类模板的叙述正确的是_(分数:1.00)A.不可以通过一个类派生类模板B.可以从一个类模板派生出一个新的类模板C.类模板不支持单一继承D.类模板不可以有多个参数1
5、5.下列关于向量的描述中,不正确的是_(分数:1.00)A.size()方法指返回当前向量中已经存放的对象的个数B.erase(iterator it)方法是删除 it 所指向的容器对象C.向量可以改变赋值目标的大小D.向量是类模板,具有成员函数,但它不可以使用构造类型16.下面关于向量和数组的叙述不正确的是_(分数:1.00)A.向量是一维数组的类版本,它与数组相似B.向量的元素项是连续存储的C.向量中存储元素的多少可以在运行中根据需要动态地增加或减少D.可以使用 length()方法获得 vector 对象当前存储元素的数量17.有如下函数模板定义: template T func(T x
6、, T y) return x*x+y*y; 在下列对 func 的调用中,错误的是_(分数:1.00)A.func(1,2)B.func(1,1.1)C.func(1.1,2.1)D.func(1.1f,1.2f)18.关于向量最基本的操作方法,不正确的叙述是_(分数:1.00)A.max_size()方法返回向量可以容纳最多对象的个数B.pop_back()方法删除向量中最后一个对象C.operator()方法返回向量中的第 n 个对象D.clear()方法删除向量中所有对象19.下列关于模板类说法中,正确的是_(分数:1.00)A.模板类的基类不可以是非模板类B.模板类的派生类不可以是模
7、板类C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类D.不可以从构造函数参数列表推断出模板实例化参数类型20.下列叙述不符合赋值兼容规则的是_(分数:1.00)A.派生类的对象可以赋给基类的对象B.基类的对象可以赋给派生类的对象C.派生类的对象可以初始化基类的引用D.派生类的对象的地址可以赋给指向基类的指针二、第部分 非选择题(总题数:20,分数:20.00)21.类中定义的数据和函数称为这个类的成员,即 1 和 2。 (分数:1.00)22.如果用户没有一个类定义任何构造函数,则 C+编译器自动生成一个 1 构造函数。 (分数:1.00)23.类成员的访问权限有 1、 2、 3
8、。 (分数:1.00)24.设 A 为 Sample 类的对象且赋有初值,则语句 Sample B(A);表示 1。 (分数:1.00)25.使用关键字 1 将成员函数定义为内联函数。 (分数:1.00)26.在类内部定义的 1 和 2 数据不能被类外部的成员函数来存取;定义为 3 的数据,可以在类外部进行存取。 (分数:1.00)27.在对象消失时,应使用 1 释放由构造函数分配的内存。 (分数:1.00)28.在继承机制下,当对象消亡时,编译系统执行析构函数的顺序是 1。 (分数:1.00)29.在程序中,使用关键字 1 引用一个指向调用该函数的对象的指针。 (分数:1.00)30.已定义
9、类 A,若要把函数 ffun()定义为类 A 的友元函数,则应在类 A 的定义中声明函数的语句为 1。 (分数:1.00)31.在多文件设计中,point.h 可能会被嵌套包含,这时候为了避免重复编译类的同一个头文件,可以使用 1。 (分数:1.00)32.友元函数可以存取类的 1。 (分数:1.00)33.当一个类要和另一个类协同工作时,使一个类成为另一个类的 1 很有用。 (分数:1.00)34.在多继承问题中,若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上 1 和类区分符,来避免二义性。 (分数:1.00)35.从一个或者多个以前定义的类产生新类的过程
10、成为 1。 (分数:1.00)36.请在横线处填写正确的内容,使复制构造函数的声明完整。 class MyClass private: int num; public: MyClass(int value); /构造函数 MyClass(coast 1 another Object);/复制构造函数 ; (分数:1.00)37.常量成员包括常数据成员、静态常数据成员和 1。 (分数:1.00)38.当一个成员函数被调用时,this 指针指向当前调用该成员函数调用命令的 1。 (分数:1.00)39.对象传递的消息一般由三部分组成:接收对象名、调用操作名、 1。 (分数:1.00)40.用户为类
11、 AB 定义了一个含两个参数的构造函数“AB(int aa, int bb=0)a=aa; b=bb“,则定义该类的对象时,其实参表中至少带有 1 个实参。 (分数:1.00)三、改错题(总题数:5,分数:20.00)41.class Sample public: static void f(Sample my); private: int n; ; void Sample:f(Sample my) coutnendl; (分数:4.00)42.class Sample int num; public: void set(int); ; int nunber=num; void Sample:
12、set(int i) num=i; (分数:4.00)43.class B int x, y; public: void B(int m, int n); ; (分数:4.00)44.class Sample1 int x; friend class Sample2; ; class Sample2 friend class Sample3; class Sample3 void func(Samplel*p); ; void Sample3:func(A*p) p-x+; (分数:4.00)45.指出错误语句,并说明出错原因。 class base public: int x; ; clas
13、s One: public base; class Two: public base; class Three public One, public Two public: int func 1; ; void main 2 Three p; p.base:x; (分数:4.00)四、完成程序题(总题数:5,分数:20.00)46.程序的输出结果如下: 1,2 5,6 30 请根据输出结果在下面程序中的下画线处填写正确的语句。 #includeiostream using namespace std; class M public: void Set(int i, int j)m1=i; m2
14、=j; void Print()coutm1“, “m2endl; protected: int m1, m2; ; class N: public M public: void Set()n=m1*m2; void Print()coutnendl; private: int n; ; void main() M m; _ ; m.Print(); N n; _ ; n.M:Print(); n.Set(); n.Print(); (分数:4.00)_47.在下面横线处填上正确的内容,完成类的定义。 #includeiostream using namespace std; class Po
15、int private: int x, y; public: Point(int=0, int=0); _/声明析构函数 ; Point:point(int a, int b):x(a), y(b) cout“Initializing“a“, “bendl; void main() Point * ptr=new Point2; Deleteptr; (分数:4.00)_48.在下面横线处填上正确的内容,完成类的定义。 class sample int x; static const int b; public: sample(int, int); const int ; _b=15; sam
16、ple:sample(int i, int j):_ (分数:4.00)_49.类 One 的对象可以通过任意一个成员函数访问类 Two 的对象的私有数据。 #includeiostream using namespace std; class Two int y; public: _/声明 One 为 Two 的友元 ; class One int x; public: One(int a, Two x=a; r.y=b; _/可以访问类 Two 的成员的成员函数的声明 ; void One:Display(Two void main() Two Obj2; One Obj1(23, Obj
17、2, 55); Obj1.Display(Obj2); /输出 23 55 (分数:4.00)_50.一个处理日期的类 Date,它有 3 个私有数据成员:Month,Day,Year 和若干个公有成员函数,并实现了如下要求:(1)构造函数重载;(2)成员函数设置默认参数;(3)定义一个友元函数来打印日期;(4)定义一个非静态成员函数设置日期;(5)可使用不同的构造函数来创建不同的对象。请完成下面的程序。 #includeiostream using namespace std; class Date public: Date() Year=1990; Month=1; Day=1; Date
18、(int y, int m=1, int d=1) Year=y, Month=m; Day=d; _ void SetDate(int sy, int sm, int sd) Year=sy; Month=sm; Day=sd; private: int Month, Day, Year; ; void Print( _ ) coutobj.Year“-“obj.Month“-“obj.Dayendl; void main() Date a1, a2(2013, 7, 8), a3(2005); Print(a1); Print(a2); Print(a3); a3.SetDate(2005
19、, 11, 28); Print(a3); (分数:4.00)_五、程序分析题(总题数:2,分数:10.00)51.给出下面程序的输出结果。 #includeiostream using naillespace std; class Base private: int a; public: void set(int x)a=x; void show()cout“a=“a“, “; ; class Sample: public Base private: int b; public: void set(int x=0)Base:set(x); b=x+10; void set(int x, in
20、t y)Base:set(x); b=y; void show()Base:show(); cout“b=“bendl; ; void main() Sample b; Sample.set(10); Sample.show() Sample.set(30, 50); Sample.show() (分数:5.00)_52.#includeiostream using namespace std; class Base private: int x, y; const int p; public: Base(int m, int n, int d):p(d) /通过初始化列表来获得初值 x=m;
21、 y=n; void show(); void show() const; ; void Base:show() coutx“, “y“p=“pendl; void Base:show const coutx“, “y“const p=“pendl; void main() Base a(1, 2, 3); const Base b(2, 1, 4); b.show(); a.show(); (分数:5.00)_六、程序设计题(总题数:1,分数:10.00)53.定义一个 Rectangle 类,在该类定义中包括以下数据成员:长 length,宽 width,高 height。构造函数 Rec
22、tangle 设置长方形的长、宽和高,函数 Volume 计算并输出长方形的体积。 在 main 函数中,要求创建 Rectangle 对象,并求长方形的体积。 (分数:10.00)_C+程序设计自考题模拟 12 答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:20,分数:20.00)1.在类中声明的成员可以使用以下哪个关键字进行修饰_(分数:1.00)A.externB.autoC.regusterD.void 解析:考点 C+类的声明 解析 类是具有唯一标识符的实体,在类中声明的任何成员不能使用 extern、auto、register 关键字进行修饰。2.
23、下列关于构造函数的描述中,正确的是_(分数:1.00)A.构造函数不可以设置默认的参数B.构造函数不可以是内联函数C.构造函数在定义类对象时自动执行 D.构造函数不可以重载解析:考点 构造函数 解析 构造函数可以设置默认的参数,可以是内联函数,可以重载,所以 ABD 项错误,C 项正确。3.用于表明类其后的成员函数属于这个特定类的运算符是_(分数:1.00)AB.-C.: D.void解析:考点 C+类成员函数的定义 解析 类名:成员函数名的意思是对属于“类名”的成员函数进行定义。4.在定义一个派生类时,若不使用保留字显式地规定采用何种继承方法,则默认为_方式。(分数:1.00)A.公有继承B
24、.私有继承 C.保护继承D.非私有解析:考点 派生类默认的继承方式 解析 在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认 private(私有)方式。5.类对象的指针可以通过_运算符访问对象的成员。(分数:1.00)AB.- C.:D.void解析:考点 C+类对象指针的使用 解析 对象指针名-对象成员名,类对象指针可以访问对象的成员。6.下列关于复制构造函数的说法中错误的是_(分数:1.00)A.复制构造函数是一种特殊的构造函数,函数名与类名相同B.若自定义派生类的复制构造函数,那么也必须自定义基类的复制构造函数 C.复制构造函数只能有一个参数D.复制构造函数不允许在函
25、数体中使用 return 语句解析:考点 复制构造函数 解析 复制构造函数是一种特殊的构造函数,函数名与类名相同,且不能指定函数返回类型;复制构造函数只有一个参数,是对同类的某个对象的引用。A、C、D 项正确。B 项错误。7.运算符_与析构函数一起工作来删除一个动态对象。(分数:1.00)A.delete B.cutC.clearD.cancel解析:考点 本题考查的知识点是析构函数和运算符 delete 解析 当使用运算符 delete 删除一个动态对象时,它首先为这个对象调用析构函数,然后再释放这个动态对象占用的内存。8.下列不属于实例连接的方式的为_(分数:1.00)A.一对一B.一对多
26、C.多对一 D.多对多解析:考点 UML 实例连接的方式 解析 实例连接反应对象之间的静态关系,有一对一、一对多、多对多三种连接方式。9.下列关于类的描述中,错误的是_(分数:1.00)A.类是一组对象的模板B.类是抽象数据的实现C.类是数据和方法的封装体D.类是对象的实例 解析:考点 类的定义 解析 类是一组对象的模板,所有对象是类的实例,所以 D 项是错误的。10.下面哪个关键字不属于修饰类特殊成员函数的关键字_(分数:1.00)A.constB.volatileC.staticD.public 解析:考点 类的特殊成员函数 解析 函数的声明如果包含 const、volatile、stat
27、ic 关键字,则为类的特殊函数。11.下述静态成员的特性中,正确的是_(分数:1.00)A.静态成员函数可以利用 this 指针B.静态数据成员要在类体内进行初始化C.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符 D.静态数据成员不是所有对象所共有的解析:考点 静态成员 解析 静态成员函数属于整个类,是类的所有对象共享的成员函数,它与一般成员函数不同,没有指向调用该成员函数的对象的 this 指针,A 项错误;静态数据成员的初始化应在类体外进行,B 项错误;静态数据成员是属于整个类的,因此可以不通过对象名,而直接使用类名和作用域运算符表明其所属的类即可,C 项正确;静态数据成员
28、被类的所有对象所共享,D 项错误。12.下列关于静态成员函数与一般成员函数的不同点不正确的是_(分数:1.00)A.静态成员是类的成员,不是对象的成员B.静态成员的生成在建立对象之后 C.静态成员函数不能被说明为虚函数D.静态成员函数不能直接访问非静态函数解析:考点 静态成员函数与一般成员函数的不同点 解析 在没有建立对象之前,静态成员就已经存在,所以 B 是错误的。13.类的派生和继承是面向对象程序设计方法的重要特征之一,下面关于它的叙述正确的是_(分数:1.00)A.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数 D.虚函数必须在派生类中重
29、新实现解析:考点 继承和派生 解析 派生类可以访问基类的保护成员;抽象类不能被实例化,而作为虚基类的类能被实例化;虚函数不必在派生类中重新实现。故 A、B、D 错误,C 项说法正确。14.下面关于类模板的叙述正确的是_(分数:1.00)A.不可以通过一个类派生类模板B.可以从一个类模板派生出一个新的类模板 C.类模板不支持单一继承D.类模板不可以有多个参数解析:考点 类模板的派生与继承 解析 类模板可以继承,继承方法和普通类一样。模板类的基类和派生类都可以是模板(非模板)类,由此可以推断出,答案选择 B。15.下列关于向量的描述中,不正确的是_(分数:1.00)A.size()方法指返回当前向
30、量中已经存放的对象的个数B.erase(iterator it)方法是删除 it 所指向的容器对象C.向量可以改变赋值目标的大小D.向量是类模板,具有成员函数,但它不可以使用构造类型 解析:考点 向量 解析 向量可以使用构造类型,它提供了四种构造函数,用来定义由各元素组成的列表,所以 D 选项有误。16.下面关于向量和数组的叙述不正确的是_(分数:1.00)A.向量是一维数组的类版本,它与数组相似B.向量的元素项是连续存储的C.向量中存储元素的多少可以在运行中根据需要动态地增加或减少D.可以使用 length()方法获得 vector 对象当前存储元素的数量 解析:考点 向量与数组的知识 解析
31、 向量是类模板,具有成员函数,是使用 size()方法动态地获得 vector 对象当前存储元素的数量。17.有如下函数模板定义: template T func(T x, T y) return x*x+y*y; 在下列对 func 的调用中,错误的是_(分数:1.00)A.func(1,2)B.func(1,1.1) C.func(1.1,2.1)D.func(1.1f,1.2f)解析:考点 函数模板的应用 解析 函数模板 func(Tx,Ty),要求参数 x、y 为同一类型的,所以 B 项是错误的。18.关于向量最基本的操作方法,不正确的叙述是_(分数:1.00)A.max_size()
32、方法返回向量可以容纳最多对象的个数B.pop_back()方法删除向量中最后一个对象C.operator()方法返回向量中的第 n 个对象 D.clear()方法删除向量中所有对象解析:考点 向量的基本操作方法 解析 operator(size_type,n)返回的是向量中第 n+1 个对象,即下标为 n 的向量元素。19.下列关于模板类说法中,正确的是_(分数:1.00)A.模板类的基类不可以是非模板类B.模板类的派生类不可以是模板类C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类 D.不可以从构造函数参数列表推断出模板实例化参数类型解析:考点 类模板 解析 模板实例化参数类型
33、包括数据类型和值,编译器不能从构造函数参数列表推断出模板实例化参数类型,所以必须显式地给出对象的参数类型。20.下列叙述不符合赋值兼容规则的是_(分数:1.00)A.派生类的对象可以赋给基类的对象B.基类的对象可以赋给派生类的对象 C.派生类的对象可以初始化基类的引用D.派生类的对象的地址可以赋给指向基类的指针解析:考点 赋值兼容规则 解析 赋值兼容规则是指如下三种情况:(1)派生类的对象可以赋值给基类的对象;(2)派生类的对象可以初始化基类的引用;(3)派生类的对象的地址可以赋给指向基类的指针。二、第部分 非选择题(总题数:20,分数:20.00)21.类中定义的数据和函数称为这个类的成员,
34、即 1 和 2。 (分数:1.00)解析:数据成员 成员函数 考点 C+类的定义 解析 类和其他数据类型不同的是,组成这种类型的不仅有数据,而且可以有对数据进行操作的函数,它们分别叫做类的数据成员和类的成员函数。22.如果用户没有一个类定义任何构造函数,则 C+编译器自动生成一个 1 构造函数。 (分数:1.00)解析:无参数的默认 考点 类的默认构造函数 解析 当没有为一个类定义任何构造函数的情况下,C+编译器总要自己建立一个不带参数的构造函数。23.类成员的访问权限有 1、 2、 3。 (分数:1.00)解析:私有 公有 保护 考点 类成员的访问权限 解析 类成员前面均有一个关键字来定义,
35、private、public、protected 分别为私有、公有、保护。24.设 A 为 Sample 类的对象且赋有初值,则语句 Sample B(A);表示 1。 (分数:1.00)解析:用对象 A 初始化对象 B 考点 类的对象的初始化 解析 A、B Sample 类的对象,已知 A 赋有初值,初始化 B 时可令其直接等于 A 来赋值 B。25.使用关键字 1 将成员函数定义为内联函数。 (分数:1.00)解析:inline 考点 类的内联函数 解析 在声明类的同时,在类体内给出成员函数的定义,默认为内联函数。26.在类内部定义的 1 和 2 数据不能被类外部的成员函数来存取;定义为
36、3 的数据,可以在类外部进行存取。 (分数:1.00)解析:private protected public 考点 C+类的数据成员的访问权限 解析 类中的私有数据成员和保护数据成员只能被该类的成员函数所存取,类中公有数据成员可以在类的外部进行存取。27.在对象消失时,应使用 1 释放由构造函数分配的内存。 (分数:1.00)解析:析构函数 考点 对象的析构函数 解析 析构函数会在对象生存期结束时被自动调用,由它来释放构造函数分配的内存。28.在继承机制下,当对象消亡时,编译系统执行析构函数的顺序是 1。 (分数:1.00)解析:先派生类,后派生类中子对象类,最后是基类 考点 C+类中析构函数
37、的执行过程 解析 在对象消失时,使用析构函数释放由构造函数分配的内存,其执行过程与构造函数正好相反。构造函数的执行过程是基类,然后是派生类中子对象类,接着是派生类,所以答案与这个过程相反。29.在程序中,使用关键字 1 引用一个指向调用该函数的对象的指针。 (分数:1.00)解析:this 考点 this 指针的功能 解析 C+指针是实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起。写成如下形式:this-x=a。30.已定义类 A,若要把函数 ffun()定义为类 A 的友元函数,则应在类 A 的定义中声明函数的语句为 1。 (分数:1.00)解析:friend void ffu
38、n() 考点 C+类友元函数的定义 解析 把 void ffun()定义为类 A 的友元函数,类 A 定义如下: class A public: friend void ffun(); 31.在多文件设计中,point.h 可能会被嵌套包含,这时候为了避免重复编译类的同一个头文件,可以使用 1。 (分数:1.00)解析:条件编译 考点 在头文件中使用条件编译 解析 为了避免重复编译类的同一个头文件,不引起变量及类的重复定义,可对该头文件使用条件编译。32.友元函数可以存取类的 1。 (分数:1.00)解析:所有成员 考点 C+类的友元函数 解析 友元函数不是当前类的成员函数,是独立于当前类的外
39、部函数,但它可以访问该类的所有成员,包括私有成员、保护成员、公共成员。33.当一个类要和另一个类协同工作时,使一个类成为另一个类的 1 很有用。 (分数:1.00)解析:友元 考点 将一个类说明为另一个类的友元 解析 设计两个类为友元类,可以有效地解决两个类之间的协作问题。34.在多继承问题中,若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上 1 和类区分符,来避免二义性。 (分数:1.00)解析:类名 考点 C+派生类与基类中二义性的问题 解析 程序设计过程中,一定要注意避免定义的二义性,可以使用作用域分辨运算符“:”和类名限定解决二义性。35.从一个或者多
40、个以前定义的类产生新类的过程成为 1。 (分数:1.00)解析:派生 考点 派生的基本概念 解析 类的派生是面向对象程序设计方法重要的特征。由一个或者多个基类产生新类的过程称为派生,这个新类称为派生类。36.请在横线处填写正确的内容,使复制构造函数的声明完整。 class MyClass private: int num; public: MyClass(int value); /构造函数 MyClass(coast 1 another Object);/复制构造函数 ; (分数:1.00)解析:MyClass b=bb“,则定义该类的对象时,其实参表中至少带有 1 个实参。 (分数:1.00
41、)解析:1 考点 C+中构造函数的定义和使用方法 解析 用户为类 AB 定义的构造函数是一个带有两个参数的,并使用初始化列表的形式在函数体内定义,所以定义该类的对象时,其实参表中至少带有 1 个实参。三、改错题(总题数:5,分数:20.00)41.class Sample public: static void f(Sample my); private: int n; ; void Sample:f(Sample my) coutnendl; (分数:4.00)解析:void Sample:f(Sample my)coutmy.nendl; 考点 C+成员函数中私有数据成员的引用 解析 成员
42、函数 f(Sample)的实现中对私有数据成员 n 的引用方式不正确。42.class Sample int num; public: void set(int); ; int nunber=num; void Sample:set(int i) num=i; (分数:4.00)解析:int number=num; 考点 类的作用域 解析 在类作用域中声明的标识符只在类中可见。43.class B int x, y; public: void B(int m, int n); ; (分数:4.00)解析:void B(int m, int n)改为 B(int m, int n) 考点 C+构
43、造函数的定义 解析 C+在定义构造函数时不能指定返回类型,即使是 void 类型也不可以。44.class Sample1 int x; friend class Sample2; ; class Sample2 friend class Sample3; class Sample3 void func(Samplel*p); ; void Sample3:func(A*p) p-x+; (分数:4.00)解析:语句p-x+;出错( 考点 友元函数的使用 解析 友元关系不可传递,类 Sample3 不是类 Sample1 的友元,不能访问 Sample1 的成员。45.指出错误语句,并说明出错
44、原因。 class base public: int x; ; class One: public base; class Two: public base; class Three public One, public Two public: int func 1; ; void main 2 Three p; p.base:x; (分数:4.00)解析:语句 p.base:x,出错,出现二义性 考点 基类成员访问的二义性 解析 因为类 Three 公有派生类 One 和类 Two,类 One 和类 Two 中均有成员 x,难以区分调用哪一个类。四、完成程序题(总题数:5,分数:20.00)46.程序的输出结果如下: 1,2 5,6 30 请根据输出结果在下面程序中的下画线处填写正确的语句。 #includeiostream using namespace std; class M public: void Set(int i, int j)m1=i; m2=j; void Print()coutm1“, “m2endl; protected: int m1, m2; ; class N: public M public: void Set()n=m1*m2; void Print()coutnendl; private: int n