Я искал описания различий между функциями-членами и функциями, не являющимися членами, и, хотя я все еще в замешательстве, я решил привести пример, чтобы немного прояснить для себя ситуацию. Вот вопрос из старого теста, который наш инструктор дал нам в качестве учебного материала:
Предположим, у нас есть программа main(), которая использует реализации шаблонов queue2.h и node2.h из нашего текста, создавая очередь писем (queue letter).
- Мы хотим написать оператор потока для вставки всех символов строки (вещь) в очередь (буквы ‹‹ вещь;).
(б) Должны ли мы сделать это ‹‹ членом или не членом? Частный, публичный, друг или ни то, ни другое?
- Мы хотим предоставить инструмент (назовем его Get_Front), который возвращает указатель заголовка этой очереди символов для будущих манипуляций с использованием набора инструментов связанного списка.
Итак, list_head_insert(head_ptr, '2') поместит '2' в начале моей очереди, когда все правильно закодировано.
(б) Должны ли мы сделать Get_Front членом или не членом? Частный, публичный, друг или ни то, ни другое?
Я предполагаю, что первый должен быть реализован как не член с функцией друга, но я не уверен в деталях, почему?
Большое спасибо!