-
一个类的友元函数或友元类可以访问该类的()。
A . 私有成员
B . 保护成员
C . 公有成员
D . 所有成员
-
对每个可重载的运算符来说,只能重载为友元函数。
A . 正确
B . 错误
-
某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
A . 正确
B . 错误
-
什么叫做友元类?
-
若要把函数voidf()定义为类aClass的友元函数,则应该在类aClass的定义中加入的语句是()。
A . voidf();
B . staticvoidf();
C . friendf();
D . friendvoidf();
-
运算符重载的形式有两种:成员函数形式和友元形式。
A . 正确
B . 错误
-
在C++中,运算符的重载有两种实现方法,一种是通过成员函数实现,另一种则通过友元函数实现
-
一个类的友元函数或友元类能够通过成员操作符访问该类的( )。
-
如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为
A.x.operator++(0).operator*(y);
B.operator*(x.operator++(0),y);
C.y.operator*(operator++(x,0))
D.operator*(operator++(x,0),y)
-
下列运算符中全都可以被友元函数重载的是()A.=,+,-,\B.[],+,(),newC.->,+,*,>>D.<<,>>,+,*
下列运算符中全都可以被友元函数重载的是()
A.=,+,-,\
B.[],+,(),new
C.->,+,*,>>
D.<<,>>,+,*
-
如果在表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为
A.(operator++(x) ) .operator/(y)
B.(operator++(0) ) .operator/(y)
C.operator/((operator++(x,0) ) ,y)
D.operator/((operator++(0) ) ,y)
-
1、下面对于友元函数描述正确的是()
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数从表面上看破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
-
类的私有成员只能被它的成员函数和友元函数访问。
-
如果类被说明成类B的友元,则类的成员即类B的成员 B.类B的成员即类的成员 C.类如果类被说明成类B的友元,则类的成员即类B的成员 B.类B的成员即类的成员 C.类的成员函数不得访问类B的成员 D.类B不一定是类的友元
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
-
在表达式x+y*z中,+作为成员函数重载的运算符,*作为友元函数重载的运算符,以下叙述中正确的是()
A.operator+有2个参数,operator*有2个参数
B.operator+有2个参数,operator*有1个参数
C.operator+有1个参数,operator*有2个参数
D.operator+有1个参数,operator*有1个参数
-
下列运算符不能重载为友元函数的是()。A.= () [] ->B.+ - ++ --C.> < >= <=D.+= -= *_= /=
下列运算符不能重载为友元函数的是()。
A.= () [] ->
B.+ - ++ --
C.> < >= <=
D.+= -= *_= /=
-
已知类Myst有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列M
已知类Myst有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列 Myst x{3.2), y(5.5), z (0.0); z=8.9-y; y=x-6.3; 能够正常运行,运算符函数operator-应该在类中声明为,
A.friend Myst operator- (Myst&,Myst&);
B.friend Myst operator-(Myst,Myst);
C.friend Myst operator-(Myst,Myst&);
D.friend Myst operator-(Myst&,Myst);
-
【简答题】定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。⑴分别用成员函数与友元函数编写运算符重载函数;⑵在主函数中定义复数对象 c1(10,20)、c2(15,30),进行 c2-=c1 的复数运算,并输出 c1、c2 的复数值。
-
在你自己定义的类中如果要重载流插入运算符 << ,你必须将该运算符重载为类的友元函数,而不是成员函数,否则就会出现非常奇怪的使用方式。
-
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: 1.声明类objA1,请在注释∥********1********后添加适当的语句。 2.为类objA0增加友元函数func(),请在注释∥********2********后添加适当的语句。 3.为类objA1增加友元函数func(),请在注释∥********
-
9、下面对于友元函数描述正确的是()
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数从表面上看破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
-
2、一个类的友元函数或友元类能够通过成员操作符访问该类的()
A.私有成员
B.公有成员
C.保护成员
D.公有成员、保护成员和私有成员
-
下面给出了矩阵类Matrix 定义。为了求两个矩阵对象的乘积, 需要定义一个Matrix的友元函数Multiply() 。请按照友元函数Multiply()的声明编写出该函数的定义。
class Matrix {
public:
Matrix(int row,int col); // 构造一个具有row 行col 列的矩阵
~Matrix() {delete []mem;} // 析构函数
friend bool Multiply(Matrix &m1, Matrix &m2, Matrix &m3);
// 定义Multiply() 为友元函数,该函数把m1×m2的值赋给m3
// 其他成员函数从略
private:
int *mem; // 动态申请矩阵空间
const int rows,cols; // 矩阵的行数和列数
};
Matrix::Matrix(int row,int col):rows(row),cols(col)
{
mem = new int[row*col];
}
bool Multiply(Matrix &m1, Matrix &m2, Matrix &m3)
{
// 确定矩阵是否能够进行相乘
if(m1.rows != m3.rows ||m2.cols != m3.cols || m1.cols != m2.rows) return false;
// 定义sum变量,用于计算乘积矩阵m3中每个元素的值
int sum;
// 请在下面编写剩余部分
}
-
7、下列关于友元函数的描述中,错误的是()。
A.友元函数不是成员函数
B.友元函数只可访问类的私有成员
C.普通函数作为友元函数时, 其调用方法同一般函数
D.友元函数可以是另一类中的成员函数