C++ - 不同类的方法重载

标签 c++ smtp overloading

所以有一个 smtp 服务器的练习..

Define a class for each of the commands [HELO,MAIL FROM, RCPT TO, DATA] . These classes should be immutable and must therefore take all the parameters required to build the command in the constructor. Additionally, create an SMTPServer class that has a send() function that returns void and is overloaded four times, one for each command.

我很清楚什么是函数重载,但是我不太明白某些部分:

1) 函数重载实际上是如何作用于多个类的?我必须涉及继承吗?

2) 为什么要在 SMTPServer 中创建一个 send() 函数?我假设所需要做的就是在 main 中创建每个命令的实例并发送所需的内容。

旁注: 命令如下:

  • HELO 后跟一个标识字符串。
  • MAIL FROM 后跟收件人的电子邮件地址。
  • RCPT TO 后跟发件人的电子邮件地址。
  • DATA 后跟主题和电子邮件内容。

最佳答案

1) 不,你不涉及继承 - 他们要求你重载 SMTPServer 类的 send 成员函数,以便每个都可以采用不同的命令类作为参数:

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

2) 因为这就是 OOP 的工作方式 - 您将程序的每个职责封装到一个类中 (Single Responsibility Principle)。在这种特殊情况下,SMTPServer 负责传达命令。 main 的工作只是设置各种对象并调用它们的函数来完成程序的实际工作。

关于C++ - 不同类的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895507/

相关文章:

c++ - 为什么我不能链接到boost的线程库?

smtp - 如何使用 Gmail 作为 Youtrack 的 SMTP 服务器?

c - C99 不支持函数重载有什么原因吗?

c# - 重载构造函数/方法最优雅的方法是什么?

c++ - 用两个参数重载 operator bool 是什么意思?

c++ - 散列不是很长的字符串 vector (url)的最佳方法是什么?

c++ - Mex 函数比相同的 C++ 代码更快

c++ - 从可能为 NULL 的字符指针初始化 std::string

php - 使用SMTP,PHPmailer发送邮件时如何知道用户发送和阅读邮件

ruby-on-rails - 阻止可疑登录(Heroku,Amazon AWS,Gmail SMTP)