Зачем использовать базовые классы для узлов списка/дерева в стандартной библиотеке C++?C++

Программы на C++. Форум разработчиков
Anonymous
Зачем использовать базовые классы для узлов списка/дерева в стандартной библиотеке C++?

Сообщение Anonymous »


В libstdc++ и libc++ внутренние узлы для списков (например, list и forward_list) и других деревьев состоит (как минимум) из двух частей: базового класса узла; и сам класс узла. Например, вместо:

struct sl_full_node { sl_full_node *p; целое значение; }; ...мы увидим что-то вроде:

struct sl_node_base { sl_node_base *p; }; структура sl_node: sl_node_base { целое значение; }; Простой, самодостаточный пример этой идиомы можно найти в предложении об односвязном списке от 2008 года здесь. Каковы преимущества такого подхода?

Вернуться в «C++»