Как называется этот указатель внутри концепции класса C / ООП?

#c #oop

#c #ооп

Вопрос:

 class Node { 
public: 
    int data; 
    Node* next; 
}; 
 

В этом узле есть класс, но я не понял, что Node* next это такое. Это похоже на конструктор класса?

Комментарии:

1. Это односвязный список. Это просто указатель на следующий узел.

2. Это похоже на конструктор класса? Просто еще одна переменная-член, которая просто случайно указывает на экземпляр a Node . Если у этого есть какое-либо причудливое имя (кроме, возможно, односвязного списка) Я этого не знаю.

3. Это просто означает, что каждый экземпляр Node содержит указатель на другой экземпляр Node . Настройте вещи так Node , чтобы s были в цепочке, причем последний Node в цепочке содержит нулевой указатель, и вы создали односвязный список. Настройте указатели другими способами (например, следуя цепочке, в конечном итоге вы вернетесь к исходному узлу), после чего вы сможете создавать другие структуры данных.

Ответ №1:

Это не конструктор класса, это просто вторая общедоступная переменная-член. Он имеет тип Node* , а не тип int , но в остальном он похож на int data; строку.

Ответ №2:

В этом случае next является общедоступным полем внутри узла класса, которое имеет тип Node*

Класс Node представляет собой связанный список с данными типа int .

эквивалентно:

 struct Node {  
    int data; 
    Node* next; 
}; 
 

Комментарии:

1. Размер каждого узла сам по себе не составляет 4 байта, но данные (то есть int) обычно составляют 4 байта. Вы правы, хотя размер int может меняться в зависимости от архитектуры.