gpt4 book ai didi

c++ - 模板接口(interface) - 通过引用或值使用

转载 作者:行者123 更新时间:2023-11-30 03:57:59 25 4
gpt4 key购买 nike

我有一个模板界面

template <typename Graph, typename V>
size_t bfs(const Graph& g, const V s, const V x);

其中类型 V 是顶点的名称。预计它将是一个易于复制的类型(任何原语),但没有什么能阻止用户使用 std::string 作为名称。

对于引用,8 个字节(64 位)被复制,并且必须做额外的工作来取消引用它。这与 4 个字节相比,对于通常的 intsize_t 命名顶点的情况没有额外的工作。

接口(interface)应该是 const V& 还是只是 const V

最佳答案

可能需要在实现中复制的任何推导参数都应按值传递(添加 const 是没有意义的,但是:它不会更改接口(interface)但限制实现)。主要原因是:如果用户想要/需要提供参数引用语义并且它是按值传递的,则可以轻松完成,例如,通过传递 std::ref(x)。但是,一旦实体通过引用传递(包括所有三种形式 T&T const&T&&),就无法创建具有值(value)行为。

关于c++ - 模板接口(interface) - 通过引用或值使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663867/

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