草庐IT

moving_avgs

全部标签

c++ - 为什么AVG(antivirus)将Dev-C++生成的可执行文件检测为病毒?

我创建了一个默认的Dev-C++项目,而不是通常的return0;,而是returnEXIT_SUCCESS;,并且在编译和运行它时,我的防病毒软件警告我该可执行文件是病毒。我用VisualC++,Eclipse和Codeblocks尝试了相同的代码,他们都成功地编译了它……所以我在这里有些困惑。—当其他类似的宏运行正常时,为什么AVG将returnEXIT_SUCCESS;行作为Dev-C++生成的可执行文件检测为病毒? 最佳答案 AVG为什么将我的C++程序标记为病毒?例如,这是AVG检测为病毒的C++程序:#include#i

c++ - std::move 和 std::copy 是否相同?

我尝试做类似的事情:std::copy(std::make_move_iterator(s1.begin()),std::make_move_iterator(s1.end()),std::make_move_iterator(s2.begin()));出现这个错误:error:usingxvalue(rvaluereference)aslvalue*__result=std::move(*__first);这让我感到困惑。如果您使用std::move,也会发生同样的事情。看起来GCC内部使用了一个名为std::__copy_move_a的函数,它move而不是复制。使用std::co

c++ - 为什么这里调用复制构造函数,而不是 move 构造函数?

我有一个类,PlayerInputComponent:.h:classPlayerInputComponent{public:PlayerInputComponent(PlayerMoveComponent&parentMoveComponent_,std::unique_ptrinputConverter_);PlayerInputComponent(PlayerInputComponent&&moveFrom);voidupdate();private:std::unique_ptrinputConverter;PlayerMoveComponent&parentMoveCompo

c++ - 子类中的默认 move 构造函数

在C++11中,如果基类定义了自己的move(复制)构造函数(赋值运算符),子类是否需要在调用基类的地方定义自己的move(复制)构造函数(赋值运算符)显式调用相应的构造函数/运算符?每次都清楚地定义构造函数、析构函数、move/复制构造函数(赋值运算符)是个好主意吗?structBase{Base(){}Base(Base&&o);};structSub:publicBase{Sub(Sub&&o);//NeedIdoitexplicitly?Ifnot,whatthecompilerwilldoforme}; 最佳答案 如果您没

c++ - 使用 std::move 返回时 "return-by-rvalue-ref"和 "return-by-value"之间的区别?

考虑以下代码:#includeusingnamespacestd;structI{I(I&&rv){coutC包含I。而C::foo()允许您将I移出C。上面使用的成员函数有什么区别:I&&foo(){returnmove(i)};//returnrvalueref和以下替换成员函数:Ifoo(){returnmove(i)};//returnbyvalue对我来说,它们似乎做同样的事情:Ii=c.foo();导致调用I::I(I&&);.本例未涉及的会有什么后果? 最佳答案 撇开您编写的程序是否真正有意义的考虑因素(从数据成员移动

c++ - 没看懂Stroustup先生建议删除抽象类Shape的copy default和move操作

我试图理解作者在他的新书(TCPL第4版)中3.3.4SuppressingOperations中的建议,但无济于事。书摘Usingthedefaultcopyormoveforaclassinahierarchyistypicallyadisaster:Givenonlyapointertoabase,wesimplydon’tknowwhatmembersthederivedclasshas(§3.3.3),sowecan’tknowhowtocopythem.So,thebestthingtodoisusuallytodeletethedefaultcopyandmoveoper

c++ - 返回成员变量时如何利用 move 语义?

我正在实现一个构建uint8_tvector的工厂类。我希望能够在返回结果vector时利用move语义。这似乎可行,但我不确定这是完成我想要的事情的正确方法。我已经看到很多关于如何将返回的自动变量视为右值并使用调用代码的move构造函数的示例,但在我的示例中,返回的对象是一个成员。我知道如果调用者将返回值放入move构造函数中,成员将丢失其内容-这正是我想要的。我是这样写的:#include#include#includeclassFactory{public:std::vector_data;Factory(std::size_tsize):_data(size,0){}voidb

c++ - 为什么不调用 move 构造函数?

这个问题在这里已经有了答案:Whatarecopyelisionandreturnvalueoptimization?(5个答案)Copyconstructornotcalled?(2个答案)关闭6年前。据我了解,move构造函数将在创建临时对象时调用。这里getA()函数返回一个临时对象,但我的程序没有打印来自move构造函数的消息:#includeusingnamespacestd;classA{public:A(){cout

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor

c++ - 如何根据 is_nothrow_move_constructible<T> 声明包装类型 X<T> noexcept 的移动构造函数?

假设我有一个包装类型templatestructX{/*..*/};而且我不能只是X(X&&)=default因为我必须在那里做一些重要的事情。但是,我希望它是noexcept但前提是T(T&&)是noexcept。这可以使用::std::is_nothrow_move_constructible进行测试。我不知道如何根据constexpr有条件地启用构造函数的一个版本或另一个版本。我想可能有一种使用SFINAE的方法,但我不知道如何将其应用于ctors。 最佳答案 noexcept说明符接受任何bool常量表达式,因此您可以直接检