所以有一个 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/