我搜索了有关成员函数和非成员函数之间区别的描述,虽然我仍然很困惑,但我想我会举一个例子来为我澄清一下。这是我们的老师给我们作为学习材料的旧测试中的一个问题:
假设我们有一个 main() 程序,它使用我们文本中的 queue2.h 和 node2.h 模板实现,创建一个字母队列(队列字母)。
- 我们想编写一个流运算符来将字符串(事物)的所有字符插入队列(字母 << 事物;)。
(b) 我们应该把这个 << 设为会员还是非会员?私人的、公共的、朋友的,还是两者都不是?
- 我们想提供一个工具(称为 Get_Front),它返回这个字符队列的头指针,以便将来使用链表工具包进行操作。
因此,当一切编码正确时,list_head_insert(head_ptr, '2') 将在我的队列前面放置一个 '2'。
(b) 我们应该让 Get_Front 成为成员还是非成员?私人的、公共的、朋友的,还是两者都不是?
我猜第一个应该被实现为具有朋友功能的非成员,但我不确定具体为什么?
非常感谢!