复制按值返回的对象和移动它有什么区别?

问题描述 投票:0回答:1

我想知道将函数的返回值移动到 std::string 对象而不是直接复制它是否有任何意义?

“ip_str”是应该获取“getp1settings()”返回值的对象:

std::string ip_str = std::move(getp1settings());

下面是“getp1settings”的实现。

std::string SIGDManager::getp1settings() {

    DBAutoConnection connection;
    ...

    std::string p1_virtual;
    if (reader()) {
        reader >> p1_virtual;
    }
    
    ...

    return p1_virtual;
}

所以,我的问题是(就性能而言)将返回值获取到“ip_str”的最佳方法是什么?

? 1. std::string ip_str = std::move(getp1settings());

? 2. std::string ip_str = getp1settings();

c++ optimization move move-semantics
1个回答
0
投票

A

std::string
可以并且将会从 r 值参考中移动。您不需要
std::move
来转换为右值引用,因为
getp1settings()
已经是 1。

© www.soinside.com 2019 - 2024. All rights reserved.