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、一个函数可以是多个类的友元函数。 正确 错误
《面向对象程序设计》第05章在线测试
《面向对象程序设计》第05章在线测试
剩余时间:5 9:53
第一题、单项选择题(每题1分,5道题共5分)
1、为了实现两个复数类对象c1,c2相加c1+c2,下面的语句正确的是()
B、class Complex { Complex operator+(Complex &);}
C、class Complex { Complex operator+(Complex, Complex);}
A、class Complex { Complex operator+();}
D、Complex operator+(Complex &);
2、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。
A、a.operator==(b) C、operator==(a,b)
B、b.operator==(a) D、operator==(b,a)
3、如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。
A、a.operator++(1) C、operator++(a,1)
B、operator++(a) D、a.operator++()
4、假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如“m1=m2=m3;”。重载操作符=的函数原型最好是( )。
A、int operaotor=(M); C、M operator=(M&);
B、int operator=(M&); D、M& operator=(M);
5、下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是( )。
A、Value operator+(Value, Value); C、Value &operator+(Value, Value);
B、Value operator+(Value,int); D、Value &operator+(Value&, Value&);
第二题、多项选择题(每题2分,5道题共10分) 1、下面运算符不能重载的是( )
A、<< B、:: C、. D、,
2、关于运算符重载,下列说法错误的是( )。
A、所有的运算符都可以重载。
B、通过重载,可以使运算符应用于自定义的数据类型。 C、通过重载,可以创造原来没有的运算符。 D、通过重载,可以改变运算符的优先级。
3、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符不可能是( )。
A、作为友元函数重载的1元运算符 B、作为成员函数重载的1元运算符 C、作为友元函数重载的2元运算符 D、作为成员函数重载的2元运算符
4、类A中重载运算符new为成员函数的定义如下: void * operator new ( size_t size, int x, int y){?} 则使用重载new的方法错误的是:( )
A、new A;
B、new (1,2,3); C、new (1,2,3)A; D、new A (1,2,3);
5、重载del_ete运算符的格式错误的是( )
A、void * operator del_ete(void*); B、void * operator del_ete(void*,参数表); C、void * operator del_ete(参数表); D、void * operator del_ete();
第三题、判断题(每题1分,5道题共5分)
1、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
正确
错误
2、单目运算符->只能被重载为成员函数。
正确
错误
3、双目运算符重载为成员函数的时候,一个运算对象由this指针给出,另一个运算对象通过重载运算符的形参传递。
正确 错误 4、双目运算符op重载为A类的成员函数后,表达式“ obj1 op obj2”可以解释为:operator op(obj1,obj2)。 正确 错误 5、重载=运算符没有实际意义,因为系统会为每一个类自动生成赋值运算符。 正确 错误