C++ 友元函数选择题练习 2

2025年5月5日 | 阅读 3 分钟

1. 如果友元函数在命名空间中声明,以下代码的输出是什么?

  1. 15
  2. 0
  3. 编译错误
  4. 运行时错误
 

说明

正确答案是选项 (a)。在命名空间 ns 中声明的友元函数 shows() 可以访问在同一命名空间中声明的类 A 的私有成员 x。它将输出值 15。


2. 以下 C++ 代码的输出是什么?

  1. 10
  2. 42
  3. 错误
  4. 运行时错误
 

说明

正确答案是选项 (b)。在此示例中,print() 函数是一个友元函数,它具有对类 A 对象的常量引用,并打印私有成员变量 x 的值,该值为 42。


3. 类 A 中友元函数的声明语法是否正确?

  1. 正确
  2. 不正确
  3. 两者
 

说明

正确答案是选项 (b)。正确的语法中在 friend 之前没有关键字,它必须是 friend void display()。


4. 以下哪个语句最能描述友元函数与类的关系?

  1. 成员函数。
  2. 具有特殊访问权限的非成员函数。
  3. 受保护的成员函数。
  4. 私有成员函数。
 

说明

正确答案是选项 (b)。C++ 中的友元函数不是类的成员,但它对类的私有和受保护成员具有特殊访问权限。


5. 以下 C++ 代码的输出是什么?

  1. 50 0
  2. 50 100
  3. 0 100
  4. 编译错误
 

说明

正确答案是选项 (b)。友元函数 display() 可以访问类 A 的私有成员 x 和类 A 的静态成员 y。之后,它显示成员变量的值。


6. 以下关于友元类的哪个语句是正确的?

  1. 友元类只能访问另一个类的公共数据成员。
  2. 友元类可以访问另一个类的私有和受保护成员。
  3. 友元类不能访问另一个类的私有成员。
  4. C++ 中不存在友元类。
 

说明

正确答案是选项 (b)。当一个类被声明为另一个类的友元时,它可以访问该类的私有和受保护成员。


7. 以下关于友元函数的哪个语句不正确?

  1. 友元函数不是类的成员。
  2. 友元函数可以访问类的私有和受保护成员。
  3. 友元函数在类内部声明,但在类外部定义。
  4. 友元函数必须在类内部定义。
 

说明

正确答案是选项 (c)。这些函数在友元类中声明,尽管它们在另一个类中定义,但它们应该在类外部定义。


8. 在 C++ 中声明函数时使用 friend 关键字的目的是什么?

  1. 允许函数成为类的一部分。
  2. 允许一个类的函数访问另一个类的私有和受保护成员。
  3. 提高代码可读性。
  4. 限制对类公共成员的访问。
 

说明

正确答案是选项 (b)。C++ 中的友元函数用于允许函数访问类的私有和公共成员,以便轻松控制函数和类之间的交互。