草庐IT

move_disc

全部标签

c++ - 为什么我们可以在 `std::move` 对象上使用 `const`?

在C++11中,我们可以编写如下代码:structCat{Cat(){}};constCatcat;std::move(cat);//thisisvalidinC++11当我调用std::move时,表示我要移动对象,即我要改变对象。移动一个const对象是不合理的,那么为什么std::move不限制这种行为呢?以后会是个陷阱吧?这里的陷阱意味着布兰登在评论中提到:"Ithinkhemeansit"traps"himsneakysneakybecauseifhedoesn'trealize,heendsupwithacopywhichisnotwhatheintended."在Scot

c++ - 为什么我们复制然后 move ?

我在某处看到有人决定复制一个对象并随后将其move到类的数据成员的代码。这让我感到困惑,因为我认为move的全部目的是避免复制。示例如下:structS{S(std::stringstr):data(std::move(str)){}};这是我的问题:我们为什么不对str进行右值引用?拷贝不会很贵,尤其是考虑到像std::string这样的东西?作者决定复制然后搬家的原因是什么?我应该什么时候自己做? 最佳答案 在我回答您的问题之前,您似乎弄错了一件事:在C++11中按值(value)取值并不总是意味着复制。如果传递了一个右值,它将

c++ - 为什么我们复制然后 move ?

我在某处看到有人决定复制一个对象并随后将其move到类的数据成员的代码。这让我感到困惑,因为我认为move的全部目的是避免复制。示例如下:structS{S(std::stringstr):data(std::move(str)){}};这是我的问题:我们为什么不对str进行右值引用?拷贝不会很贵,尤其是考虑到像std::string这样的东西?作者决定复制然后搬家的原因是什么?我应该什么时候自己做? 最佳答案 在我回答您的问题之前,您似乎弄错了一件事:在C++11中按值(value)取值并不总是意味着复制。如果传递了一个右值,它将

php - move_uploaded_file 给出 "failed to open stream: Permission denied"错误

在CentOS上尝试使用Apache2.2和PHP5.3配置上传目录时,我不断收到此错误。在php.ini中:upload_tmp_dir=/var/www/html/mysite/tmp_file_upload/在httpd.conf中:Directory/var/www/html/mysite/tmp_file_upload/>Options-IndexesAllowOverrideNoneOrderallow,denyAllowfromallOptions-IndexesCentOS目录权限:drwxrwxr-x2rootroot4096Nov1110:01imagesdrwxr

php - move_uploaded_file 给出 "failed to open stream: Permission denied"错误

在CentOS上尝试使用Apache2.2和PHP5.3配置上传目录时,我不断收到此错误。在php.ini中:upload_tmp_dir=/var/www/html/mysite/tmp_file_upload/在httpd.conf中:Directory/var/www/html/mysite/tmp_file_upload/>Options-IndexesAllowOverrideNoneOrderallow,denyAllowfromallOptions-IndexesCentOS目录权限:drwxrwxr-x2rootroot4096Nov1110:01imagesdrwxr

c++ - 为什么 `std::move` 命名为 `std::move` ?

C++11std::move(x)函数根本没有真正move任何东西。它只是对r值的转换。为什么这样做?这不是误导吗? 最佳答案 正确的是std::move(x)只是对右值的转换-更具体地说是对xvalue,asopposedtoaprvalue.并且拥有一个名为move的Actor阵容也是如此。有时会迷惑人。然而,这种命名的目的不是为了混淆,而是为了使您的代码更具可读性。历史move可追溯到theoriginalmoveproposalin2002.本文首先介绍右值引用,然后展示如何编写更高效的std::swap:templatev

c++ - 为什么 `std::move` 命名为 `std::move` ?

C++11std::move(x)函数根本没有真正move任何东西。它只是对r值的转换。为什么这样做?这不是误导吗? 最佳答案 正确的是std::move(x)只是对右值的转换-更具体地说是对xvalue,asopposedtoaprvalue.并且拥有一个名为move的Actor阵容也是如此。有时会迷惑人。然而,这种命名的目的不是为了混淆,而是为了使您的代码更具可读性。历史move可追溯到theoriginalmoveproposalin2002.本文首先介绍右值引用,然后展示如何编写更高效的std::swap:templatev

c++ - std::move 和 std::forward 有什么区别

我在这里看到了这个:MoveConstructorcallingbase-classMoveConstructor谁能解释一下:std::move之间的区别和std::forward,最好有一些代码示例?如何轻松思考,何时使用哪个 最佳答案 std::move接受一个对象并允许您将其视为临时对象(右值)。尽管这不是语义要求,但通常接受对右值的引用的函数会使它无效。当你看到std::move时,表示该对象的值以后不应该被使用,但你仍然可以分配一个新的值并继续使用它。std::forward有一个用例:将模板函数参数(在函数内部)转换为

c++ - std::move 和 std::forward 有什么区别

我在这里看到了这个:MoveConstructorcallingbase-classMoveConstructor谁能解释一下:std::move之间的区别和std::forward,最好有一些代码示例?如何轻松思考,何时使用哪个 最佳答案 std::move接受一个对象并允许您将其视为临时对象(右值)。尽管这不是语义要求,但通常接受对右值的引用的函数会使它无效。当你看到std::move时,表示该对象的值以后不应该被使用,但你仍然可以分配一个新的值并继续使用它。std::forward有一个用例:将模板函数参数(在函数内部)转换为

c++ - 什么是 std::move(),什么时候应该使用它?

这是什么?它有什么作用?什么时候使用?好的链接表示赞赏。 最佳答案 1。“这是什么?”而std::move()从技术上讲,它是一个函数-我会说它不是真的一个函数。它是编译器考虑表达式值的方式之间的一种转换器。2。“它有什么作用?”首先要注意的是std::move()实际上不会move任何东西。它将表达式从lvalue(例如命名变量)成为xvalue.一个xvalue告诉编译器:Youcanplunderme,moveanythingI'mholdinganduseitelsewhere(sinceI'mgoingtobedestro