Что означает частное в контексте возвращаемого значения определения / реализации функции (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;
}
}