Выбор сделать функцию членом, не членом, частным, общедоступным и т. Д.

Я искал описания различий между функциями-членами и не-членами, и, хотя я все еще в замешательстве, я подумал, что приведу пример, чтобы прояснить для меня кое-что. Вот вопрос из старого теста, который наш инструктор дал нам в качестве учебного материала:

Предположим, у нас есть программа main (), которая использует реализации шаблона queue2.h и node2.h из нашего текста, создавая очередь букв (queue letters).

  1. Мы хотим написать оператор потока, чтобы вставить все символы строки (вещи) в очередь (буквы << вещь;).

(б) Должны ли мы сделать это << участник или не участник?
Приватный, публичный, друг или нет?

  1. Мы хотим предоставить инструмент (назовите его Get_Front), который возвращает указатель заголовка этой очереди символов для будущих манипуляций с использованием набора инструментов связанного списка.
    Итак, list_head_insert (head_ptr, ‘2’) поместит «2» в начало моей очереди, когда все будет закодировано правильно.

(b) Должны ли мы сделать Get_Front участником или не участником?
Приватный, публичный, друг или нет?

Я предполагаю, что первый должен быть реализован как не член с функцией друга, но я не уверен в деталях относительно того, почему?

Большое спасибо!

0

Решение

(б) Должны ли мы сделать это << участник или не участник? Приватный, публичный, друг или нет?

Член, публичный.
Вы создаете объект очереди и оператор вставки перегрузки в качестве функции-члена. Может использоваться для вставки символов в очередь.

Причина: мы хотели вставить в поток очереди, а не во внешний поток, такой как cout.
Лучше по возможности использовать функции-члены. Друзья должны использоваться только тогда, когда участники не могут быть использованы.

Get_Front () становится публичной функцией-членом.

0

Другие решения

Трудно сказать, не знаю истинное назначение программы, которую вы описали выше. Я могу дать вам общий ответ.

Сделать функцию

  1. ПУБЛИЧНЫЙ, если вы хотите, чтобы кто-то получил к нему доступ.
  2. ЧАСТНЫЙ, если вы хотите, чтобы только функции-члены и друзья этого класса имели доступ.
  3. ЗАЩИЩЕНО, если вы хотите, чтобы к нему были доступны только функции-члены и друзья этого класса, а также функции-члены и друзья производного класса.
  4. ДРУГ, если вы хотите получить доступ к классам частных членов.

Насколько член & не член обеспокоен, опять же трудно сказать, не зная,
подробности о реализации. Если функция должна иметь доступ к закрытым членам класса, она должна быть функцией-членом.

0

По вопросам рекламы [email protected]