《面向对象程序设计》第04章在线测试
剩余时间:
59:57
答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)
1、已知类 A 是类 B 的友元,类 B 是类 C 的友元,下面说法正确的是 (D )
A、类 A 一定是类 C 的友元 B、类 C 一定是类 A 的友元
C、类 C 的成员函数可以访问类 B 的对象的任何成员 D、类 A 的成员函数可以访问类 B 的对象的任何成员
2、引入友元的主要目的是为了( C)。
A、增强数据安全性 B、提高程序的可靠性
C、提高程序的效率和灵活性 D、保证类的封装性
3、下面的语句能将函数void A(){} 定义为类B的友元函数的是(A )
A、class B{ friend void A();}; B、class B{ static friend void A();};
C、class B {friend static void A();}; D、class B {frined A(){};};
4、如果在类B 中定义友元,其中正确的是:C
A、class B { friend int fun(A, B&);}; B、class B { friend int fun(A, B);};
C、class B { friend int fun(A&, B&);}; D、class B { friend int fun(A&, B);};
5、关于友元类的定义正确的说法是(C )
A、如果在类B中定义友元类A ,必须先定义类A B、如果在类B中定义友元类A ,必须先定义类B
C、如果在类B中定义友元类A ,可以定义类B,后定义类A,但是必须在类B的定义之前,对类A向前引用说明 D、类A是类B的友元,类A 和类B 的定义顺序没有先后之分
第二题、多项选择题(每题2分,5道题共10分)
1、一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是( ABC)。
A、有this指针,有默认操作的对象
B、没有this指针,可以有默认操作的对象
C、有this指针,不能执行默认操作
D、没有this指针,也就没有默认操作的对象
2、下面关于友元函数正确的说法是(AD )
A、在类中用关键词friend声明友元函数
B、友元函数说明的位置只能在类的public区
C、友元函数的定义只能放在类的外部
D、友元函数不是类的成员函数
3、如果类 a 被说明成类 b 的友元,则下面的说法错误的是 ( ABC) 。
A、类 a 的成员即类 b 的成员
B、类 b 的成员即类 a 的成员
C、类 a 的成员函数不得访问类 b 的成员
D、类 b 不一定是类 a 的友元
4、下面关于友元函数使用特点的说明正确的是(AC )
A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销
B、友元函数虽然不是类的成员函数,但是因为友元函数是在类内说明的,所以也带有用this指针
C、友元函数可以以使用类内的所有成员,因此破坏了数据的安全性
D、友元函数的形参如果是类对象,可以用对象名,对象的引用或者对象指针
5、关于友元的描述中正确的是(ABC/AC(错误) )
A、友元函数可以访问该类的私有数据成员
B、一个类的友元类中的成员函数都是这个类的友元函数
C、友元可以提高程序的运行效率
D、类和类之间的友元关系可以继承
第三题、判断题(每题1分,5道题共5分)
1、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
正确 错误T
2、友元函数说明的位置只能在类的public区。
正确 错误F
3、友元函数一定不是本类的成员函数,但却可以访问本类中的所有成员。
正确 错误T
4、友元函数的返回值如果是某个类的对象的话,返回值类型必须是类对象的引用。F
正确 错误
5、友元具有传递性,单向性和继承性的特点。
正确 错误F
网友评论