C ++ - перегрузка методов для разных классов

0

Таким образом, для SMTP-сервера есть упражнения.

Определите класс для каждой из команд [HELO, MAIL FROM, RCPT TO, DATA]. Эти классы должны быть неизменными и поэтому должны принимать все параметры, необходимые для построения команды в конструкторе. Кроме того, создайте класс SMTPServer, который имеет функцию send(), которая возвращает void и перегружается четыре раза, по одному для каждой команды.

У меня есть хорошая идея о том, какая функция перегрузки, однако я не совсем понимаю некоторые части:

1) как функция перегрузки фактически работает над многими классами? Должен ли я привлекать наследование?

2) Зачем беспокоиться о создании функции send() в SMTPServer? Я предполагаю, что все, что необходимо, - создать экземпляр каждой команды в главном и отправить то, что требуется.

Sidenote: Команды следующие:

  • HELO, за которым следует строка идентификатора.
  • MAIL FROM, а затем адрес электронной почты получателя.
  • RCPT TO, а затем адрес электронной почты отправителя.
  • DATA, за которым следует тема и содержимое электронной почты.
Теги:
smtp
function-overloading

1 ответ

1
Лучший ответ

1) Нет, вы не наследуете наследование - они просят вас перегрузить функцию send члена класса SMTPServer чтобы каждый из них мог взять другой класс команды в качестве параметра:

void SMTPServer::send(HELO command);
void SMTPServer::send(MAIL_FROM command);
void SMTPServer::send(RCPT_TO command);
void SMTPServer::send(DATA command);

2) Так как это работает ООП - вы инкапсулируете каждую ответственность вашей программы в класс (принцип единой ответственности). В этом конкретном случае SMTPServer отвечает за передачу команд. Работа main просто настроить различные объекты и вызвать их функцию, чтобы сделать фактическую работу вашей программы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню