gpt4 book ai didi

c++ - 为什么来自右值引用类型的赋值不调用 move 赋值运算符?

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:31 24 4
gpt4 key购买 nike

<分区>

考虑以下代码:

#include <iostream>
#include <string>

struct my_struct {
void func(std::string&& str) {
str_ = str;
}

std::string str_;
};

int main() {
my_struct s;
std::string str("Hello");

s.func(std::move(str));

std::cout << str << std::endl;
std::cout << s.str_ << std::endl;
}

为什么我需要额外的 std::movemy_struct::func为了调用 std::string 的 move 赋值运算符?额外的std::move会是什么?到底做什么?我认为它只会将给定类型转换为其对应的右值引用?

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