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

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

1. 下面 C++ 代码的输出是什么?

  1. 15 25
  2. 10 20
  3. 编译错误
  4. 运行时错误
 

说明

正确答案是选项 (c)。由于友元函数() 修改了类 A 的私有成员 x,因此私有成员 x 无法从主函数中立即访问。


2. 在 C++ 中声明一个以类 A 对象为参数的友元函数的正确方法是什么?

  1. friend void function(A);
  2. friend void function(A &);
  3. friend void function(A *);
  4. 以上所有选项都正确。
 

说明

正确答案是选项 (d)。友元函数可以通过值、引用或指针接收类对象。


3. 基类的友元函数能否访问派生类的私有成员?

  1. 是的
  2. 不能
  3. 两者
 

说明

正确答案是选项 (b)。基类的友元函数可以访问基类的私有和保护成员,但不能访问派生类的成员。


4. 下面 C++ 代码的输出是什么?

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

说明

正确答案是选项 (d)。类“A”的私有成员“x”不能在 main() 函数中直接访问。代码 cout << obj.x; 将导致编译错误。


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

  1. 10 0
  2. 20 0
  3. 10 20
  4. 编译错误
 

说明

正确答案是选项 (c)。shows() 友元函数可以访问类 A 的非 const 和 const 对象的私有成员 x。之后,它按顺序打印它们的值。


6. 关于友元函数的以下哪个说法不正确?

  1. 友元函数不是类的成员。
  2. 友元函数可以访问类的所有成员。
  3. C++ 中的友元函数只能在类内部声明。
  4. 友元函数可以是多个类的友元。
 

说明

正确答案是选项 (c)。选项 c 中的陈述是错误的,因为友元函数是在类外部声明的,而不是在类内部定义的。


7. 下面 C++ 代码的输出是什么?

  1. 1
  2. 30
  3. 0
  4. 编译错误
 

说明

正确答案是选项 (b)。友元函数 doubleValue() 将类 A 的私有成员 x 的值加倍并打印结果,即 30。


8. 如果在声明函数时删除 friend 关键字,下面 C++ 代码的输出可能是什么?

  1. 3
  2. 5
  3. 0
  4. 编译错误
 

说明

正确答案是选项 (d)。如果在函数声明期间删除了 friend 关键字,则表示函数(例如“setX()”)将无法访问类 A 的私有成员或保护成员。因此代码无法编译。