gpt4 book ai didi

c++ - 作为右值 (c++) 在函数中传递的左值会发生什么?

转载 作者:行者123 更新时间:2023-11-28 06:16:32 24 4
gpt4 key购买 nike

我整天都在想这个问题,但找不到具体案例的答案。

主要内容:

std::vector<MyObject*> myVector;
myVector.reserve(5);
myFunction(std::move(myVector));

我的函数:

void myFunction(std::vector<MyObject*> && givenVector){
std::vector<MyObject*> otherVector = givenVector;
std::cout << givenVector[0];
// do some stuff
}

我的问题是:

  1. 主要是 myVector 被函数 myFunction() 销毁,因为它被认为是一个右值,或者编译器是否知道它也是一个左值,因此在将其发送到 myFunction 之前执行拷贝?如果我在调用 myFunction() 后尝试使用 vector ,会发生什么情况?

  2. 在函数 myFunction() 中, vector givenVector 在受到 otherVector 影响时是否被销毁?如果是这样,当我尝试打印它时会发生什么?如果不是,在此函数中使用右值是否有用?

最佳答案

看起来像duplicate .

  1. myVector 未被函数 myFunction() 销毁。对于具有被盗资源的类,在一般情况下应该发生什么是未指定的。

  2. givenVector 在影响到 otherVector 时不会被破坏。对于具有被盗资源的类,在一般情况下应该发生什么是未指定的。

关于c++ - 作为右值 (c++) 在函数中传递的左值会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191400/

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