正确 错误 5、静态数据成员不从属于任何一个具体对象,所以必须在构造函数对它初始化。 正确 错误
《面向对象程序设计》第04章在线测试
剩余时间: 59:54
第一题、单项选择题(每题1分,5道题共5分) 1、如果在类B 中定义友元,其中正确的是:
A、class B { friend int fun(A*, B&);}; C、class B { friend int fun(A&, B&);};
B、class B { friend int fun(A*, B*);}; D、class B { friend int fun(A&, B*);};
2、关于友元的说法正确的是( )
A、友元关系可以继承 C、友元关系不可以传递
B、友元关系是双向的 D、友元关系可以取消
3、将类B的成员函数int f(void)声明为类A的友元函数的语句是( )
A、class A { friend int f();} C、class A { friend class B;};
B、class A { friend int B::fun();} D、class A { friend B::fun(void);}
4、关于友元类的定义正确的说法是( )
A、如果在类B中定义友元类A ,必须先定义类A C、如果在类B中定义友元类A ,可以定义类B,后定义类A,但是必须在类B的定义之前,对类A向前引用说明
B、如果在类B中定义友元类A ,必须先定义类B
D、类A是类B的友元,类A 和类B 的定义顺序没有先后之分
5、一个类的友元函数或友元类能够通过成员操作符访问该类的( )
A、私有成员 C、公有成员
B、保护成员 D、所有成员
第二题、多项选择题(每题2分,5道题共10分) 1、定义类B的构造函数为类A的友元函数的语句是( )
A、class A { friend B();}; B、class A { friend B::B();}; C、class A { friend void B::B();}; D、class A { friend double B::B();};
2、如果函数int f(int, int)是类A的友元,那么下面的说法正确的是( )bcd ab bc bd b a
C,D,ABD
A、int f(int, int)可以访问A的私有成员
B、int f(void)是int f(int, int)的重载函数 C、int f(void)可以访问A的私有成员 D、int f()不是类A的友元函数
3、关于友元的描述中正确的是( )
A、友元函数可以访问该类的私有数据成员
B、一个类的友元类中的成员函数都是这个类的友元函数 C、友元可以提高程序的运行效率 D、类和类之间的友元关系可以继承
4、若B类为A类的友元类,则下面的说法错误的是( )
A、B类的所有成员函数都是A类的友元函数 B、B类指定的成员函数才是A类的友元 C、A类的所有成员函数可以访问B类的成员 D、B类的私有成员函数不能可以访问A类的私有成员
5、友元函数在类中的定义位置是( )
A、只能在public区 B、可以在任意区域 C、只能在protected区 D、只要在类中就可以
第三题、判断题(每题1分,5道题共5分)
1、友元只能访问类中的公有成员,不能访问私有成员。
正确
错误
2、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
正确
错误
3、友元类是使用friend关键字声明的类,它的所有成员函数都是相应类的友元函数。
正确
错误
4、如果函数f()要操作类A和类B的私有成员,可以把f()声明为类A的成员函数,把类A声明为类B的友元类。 正确 错误 5、一个函数可以是多个类的友元函数。 正确 错误