Я не уверен, правильно ли я понимаю, как работает этот класс. Это пример стека.
ref class Stack
{
private:
ref struct Item // Defines items to store in the stack
{
Object^ Obj; // Handle for the object in this item
Item^ Next; // Handle for next item in the stack or nullptr
Item(Object^ obj, Item^ next): Obj(obj), Next(next){} // Constructor
};
Item^ Top; // Handle for item that is at the top
public:
void Push(Object^ obj) // Push an object onto the stack
{
Top = gcnew Item(obj, Top); // Create new item and make it the top
}
Object^ Pop() // Pop an object off the stack
{
if(Top == nullptr) // If the stack is empty
return nullptr; // return nullptr
Object^ obj = Top->Obj; // Get object from item
Top = Top->Next; // Make next item the top
return obj;
}
};
Я не могу понять, как именно работает функция Push. в определении класса это Top=gcnew Item(obj, Top)
, поэтому в основном говорится, что Top
равно Next
. Так как же класс Stack
определяет элемент Next
, если он всегда находится на вершине стека?