好的,非常感谢您的回答,但是还有一点点小疑问想请教一下您。
vector中的数据是存储在堆上的, 也就是动态创建的一块内存,vector中有一个指针指向这块内存
如get_cmp_files中的vector res,假设res中指向堆的指针为p_sub, 这块内存是buffer S
如果我在main函数中用vector<string> v = get_cmp_files(xx) 接住它,这时候会调用vector的移动构造函数,假设v中指向堆的指针为p_main, 最开始为nullptr,那么此时我认为会交换两个指针的值,即p_main指向buffer S,p_sub指向nullptr,然后get_cmp_files函数结束,vector res析构,此时res发现p_sub指向nullptr,因此不会析构任何一块内存,所以虽然vector res定义在子函数中,但是通过移动构造,它的内存成功返回到了main函数中,没有被销毁
我理解这也是移动构造创造出来的意义,上面的这段理解在C++中会有什么问题嘛?
【 在 z16166 的大作中提到: 】
: 不会。
: auto v = get_cmp_files("cmp");
: 等价于
: ...................
--
FROM 219.142.184.*