Что означает частное в контексте возвращаемого значения определения / реализации функции (C++)?

Итак, я просматриваю некоторый код, который я нашел в отношении проекта, над которым я работаю для школы, и я нашел реализацию функции, которая имеет частную до возвращаемого значения, и я надеялся, что кто-то сможет объяснить мне ее цель и использование. Мне не удалось найти что-либо об этом в Интернете, возможно, потому, что я не совсем уверен, как поставить вопрос без перенаправления на информацию о частных в определениях классов или определениях основных функций.

private Node insert(Node h, Key key, Value val)
{
   if(h == null)
      return new Node(key, val, RED);

   if(isRed(h.left) && isRed(h.right))
      colorFlip(h);

   int cmp = key.compateTo(h.key);
   if(cmp == 0) h.val = val;
   else if(cmp < 0)
      h.left = insert(h.left, key, val);
   else
      h.right = insert(h.right, key, val);

   if(isRed(h.right))
      h = rotateLeft(h);

   if(isRed(h.left) && isRed(h.left.left))
      h = rotateRight(h);

   return h;
}

Это касается красно-черных деревьев, наклоненных влево. Заранее спасибо.

1 ответ

Решение

Я просто погуглил ваш код и нашел его на https://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf Страница 5

Это java, и код является частью реализации класса. So private просто объявляет этот метод закрытым, что означает, что этот метод может быть вызван только из класса.

См. В чем разница между общедоступным, защищенным, частным пакетом и частным в Java?

Я не уверен, как выглядит ваш документ, но в нем четко указано, что реализация предоставлена ​​на Java.

private class Node
{
  private Key key;
  private Value val;
  private Node left, right;
  private boolean color;
  Node(Key key, Value val)
  {
   this.key = key;
   this.val = val;
   this.color = RED;
  }
 }
 public Value search(Key key)
 {
   Node x = root;
   while (x != null)
   {
    int cmp = key.compareTo(x.key);
    if (cmp == 0) return x.val;
    else if (cmp < 0) x = x.left;
    else if (cmp > 0) x = x.right;
   }
   return null;
 }
 public void insert(Key key, Value value)
 {
   root = insert(root, key, value);
   root.color = BLACK;
 }
 private Node insert(Node h, Key key, Value value)
 {
   if (h == null) return new Node(key, value);
   if (isRed(h.left) && isRed(h.right)) colorFlip(h);
   int cmp = key.compareTo(h.key);
   if (cmp == 0) h.val = value;
   else if (cmp < 0) h.left = insert(h.left, key, value);
   else h.right = insert(h.right, key, value);
   if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h);
   if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h);
   return h;
 }
}
Другие вопросы по тегам