选择将功能设为成员,非成员,私人,公共等

时间:2013-05-13 21:28:06

标签: c++ member non-member-functions

我已经四处寻找有关会员和非会员功能之间差异的描述,虽然我仍然很困惑,但我想我会举一个例子来为我解决问题一点点。这是来自我们的教师给我们作为学习材料的旧测试的问题:

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

  1. 我们想编写一个流操作符来将字符串(thing)的所有字符插入到队列中(字母<< thing;)。
  2. (b)我们应该这样做<<会员还是非会员? 私人,公众,朋友,还是两者都没有?

    1. 我们想提供一个工具(称之为Get_Front),它返回此字符队列的头指针,以便将来使用链表工具包进行操作。
      因此,当所有内容都正确编码时,list_head_insert(head_ptr,' 2')会在我的队列前面放置一个'2'。
    2. (b)我们应该让Get_Front成为会员还是非会员? 私人,公众,朋友,还是两者都没有?

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

      非常感谢!

2 个答案:

答案 0 :(得分:0)

(b)我们应该这样做<<会员还是非会员?私人,公众,朋友,还是两者都没有?

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

原因:我们希望在队列流中插入,而不是在cout等外部流中插入。 最好的做法是尽可能使用成员函数。只有在不能使用会员时才应使用朋友。

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

答案 1 :(得分:0)

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

制作一个功能

  1. PUBLIC,如果您希望任何人访问它。
  2. PRIVATE如果您只想访问该类的成员函数和朋友。
  3. PROTECTED如果您只想要该类的成员函数和朋友以及派生类的成员函数和朋友访问。
  4. FRIEND如果您想访问类私有成员。
  5. 至于会员&对于非会员而言,再一次很难说不知道 有关实施的详细信息。如果函数必须访问类的私有成员,则它必须是成员函数。