我有一个想法如何简化删除代码重复。请帮助我了解它是否可用,是否良好,并可能让我们升级。
struct NetAdres
{
/*#1*/NetAdres(const std::string &str, uint16_t port); //#1
/*#2*/NetAdres(std::string &&str, uint16_t port) : NetAdres(std::move(str), port) {}; //#2
/*#3*/NetAdres(const char *str, uint16_t port) : NetAdres(std::string(str), port) {}; //#3
}
这个电话
NetAdres("192.168.2.3", 80);
据我了解电话#3
-> #2
-> #1
。而这个电话
NetAdres(std::string("192.168.2.3"), 80);
#2
-> #1
。这样的实现是否没有提供额外的副本std::string
?