0

我搜索了有关成员函数和非成员函数之间区别的描述,虽然我仍然很困惑,但我想我会举一个例子来为我澄清一下。这是我们的老师给我们作为学习材料的旧测试中的一个问题:

假设我们有一个 main() 程序,它使用我们文本中的 queue2.h 和 node2.h 模板实现,创建一个字母队列(队列字母)。

  1. 我们想编写一个流运算符来将字符串(事物)的所有字符插入队列(字母 << 事物;)。

(b) 我们应该把这个 << 设为会员还是非会员?私人的、公共的、朋友的,还是两者都不是?

  1. 我们想提供一个工具(称为 Get_Front),它返回这个字符队列的头指针,以便将来使用链表工具包进行操作。
    因此,当一切编码正确时,list_head_insert(head_ptr, '2') 将在我的队列前面放置一个 '2'。

(b) 我们应该让 Get_Front 成为成员还是非成员?私人的、公共的、朋友的,还是两者都不是?

我猜第一个应该被实现为具有朋友功能的非成员,但我不确定具体为什么?

非常感谢!

4

2 回答 2

1

很难说不知道您上面描述的程序的真正目的。我可以给你一些笼统的答案。

做一个函数

  1. PUBLIC 如果您希望任何人都可以访问它。
  2. PRIVATE 如果您只想访问该类的成员函数和朋友。
  3. 如果您只想访问该类的成员函数和朋友以及派生类的成员函数和朋友,则受保护。
  4. FRIEND 如果您想访问课程的私人成员。

就会员和非会员而言,在不了解实施细节的情况下也很难说。如果函数必须访问类的私有成员,则它必须是成员函数。

于 2013-05-13T21:48:28.693 回答
0

(b) 我们应该把这个 << 设为会员还是非会员?私人的、公共的、朋友的,还是两者都不是?

会员,公众。您创建一个队列对象并重载插入运算符作为成员函数。它可用于将字符插入队列。

原因:我们想插入队列流而不是外部流,例如 cout。最好尽可能使用成员函数。只有在会员不能使用时才可以使用好友。

Get_Front() 成为公共成员函数。

于 2013-05-13T21:32:47.240 回答