首页 > 试题广场 >

关于C++中的友元函数说法正确的是( )

[不定项选择题]
关于C++中的友元函数说法正确的是(      )
  • 友元函数需要通过对象或指针调用
  • 友元函数是不能被继承的
  • 友元函数没有this指针
  • 友元函数破环了继承性机制
友元函数是一种在类外定义,在类内特殊声明(加关键字friend),并且可以在类外访问类的所有成员的非成员函数。友元函数相对于普通函数,增加了访问类成员的权利。A、友元函数可以像普通函数一样直接调用,不需要通过对象或指针;BC、友元函数不是成员函数,所以不能被继承,也同样没有this指针;D、由于友元函数和普通函数的区别仅仅是具有访问类成员的权利,和继承性机制没有关系
发表于 2020-08-13 10:48:29 回复(0)
友元破坏的是封装性,不是继承
发表于 2021-02-23 18:39:56 回复(0)
关于友元函数,bc所说的,记住就行。然后友元函数没有this这些的,然后它破坏的是类封装属性~
发表于 2021-04-29 19:17:08 回复(0)
什么可以作友元?
1、普通的全局函数可以作为类的友元。(友元函数)
2、一个类的成员函数可以作为另一个类的友元。(友元函数)
3、一个类可以作为另一个类的友元。(友元类)

A:友元函数需要通过对象或指针调用
错误,第一种情况不成立,第二种情况友元函数可以通过对象或指针调用。因为第二种情况是类的成员函数。
B:友元函数是不能被继承的
正确,友元函数不是作为另一个类的成员,所以不能继承。
C:友元函数没有this指针
class A
{
public:
	int getA(B& b);
	int a;
};
class B
{
	friend int A::getA(B& b);
public:
	int b;
};
class C : public B
{
public:
};
int A::getA(B& b)
{
	cout << this->a << endl;
	return b.b;
}
错误,第一种情况不成立,第二种情况友元函数可以有this指针。因为第二种情况是类的成员函数。
D:友元函数破环了继承性机制
错误,友元不能被继承,没有破坏继承机制。
发表于 2023-05-11 23:58:43 回复(0)
友元函数不能被继承,友元函数没有this指针
发表于 2022-02-20 14:56:50 回复(0)

B. 友元函数是不能被继承的:友元函数的访问权限只限于声明为友元的类本身,不能被子类继承。

C. 友元函数没有 this 指针:友元函数在逻辑上不属于任何特定的类,因此没有 this 指针。它们无法直接访问类的成员变量或成员函数。

对于选项 A,友元函数可以通过对象或指针调用,但不是必须要通过对象或指针调用。

对于选项 D,友元函数并不破坏继承性机制。友元关系只适用于声明为友元的类本身,不会传递给派生类。

发表于 2023-10-14 19:36:02 回复(0)
D选项友元函数破坏了类的封装姓和隐藏性,使得非成员函数可以访问类的私有成员
发表于 2022-10-06 11:03:22 回复(0)
友元函数只是一个函数
发表于 2021-03-21 00:49:13 回复(0)