gpt4 book ai didi

c++ - 是否有 "modern"方法来避免这种代码重复

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:07:17 26 4
gpt4 key购买 nike

我有与此类似的 C++ 类:

class A{
std::string str;

public:
A(std::string &str) : str(str){}

int cmpAt(const std::string &key) const{
return str.cmp(key);
}

int cmpAt(const char *key) const{
return str.cmp(key);
}
}

两种 cmpAt 方法看起来都一样。有什么方法可以不复制该方法吗?也许使用 template

最佳答案

你应该只写一个函数模板:

template <typename K>
int cmpAt(K const& key) const {
return str.compare(key);
}

那样的话,如果你调用cmpAtconst char* ,您可以避免必须构造额外的 std::string 的开销.


编辑没关系,你运气不好:

int compare(const charT* s) const;

5 Returns: compare(basic_string(s)).

所以只需删除 const char*重载 - 与 std::string const& 相比,它不会为您提供额外的值(value)重载。你必须自己写 compare功能以避免额外的string构造函数,此时它不再是代码重复。

关于c++ - 是否有 "modern"方法来避免这种代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32541261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com