草庐IT

Semantics

全部标签

c++ - move 语义只是一个浅拷贝并将其他指针设置为空吗?

我一直在阅读C++中的move语义,在解释中人们给出了很多类比来帮助简化它,在我的脑海中我能看到的是人们所说的“move”而不是“复制”“只是对象的浅表拷贝,并将“移出”对象中的任何指针设置为空。这基本上是要点吗?浅拷贝并将其他指针设置为空? 最佳答案 Shallowcopyandsetother'spointerstonull?浅拷贝-是的。将其他人的指针设置为null-并非总是如此。最低要求是被移出的对象处于“未定义但有效的状态”,也就是说你可以重新分配给它,再次move它或删除它而不会导致程序失败,但不执行其他状态相关的操作。

C++ const 语义引用

如果代码中有如下内容:func(constbase&obj)const语义是什么意思?这里的常数是什么?obj是对非常量对象的const引用还是对const对象的非常量引用? 最佳答案 没有“非常量”引用这样的东西,也就是说,引用总是绑定(bind)到同一个对象,而且没有办法改变它。"consttype&"表示对const类型的引用。 关于C++const语义引用,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - "move semantics"和 "rvalue reference"的 Visual Studio 实现

我看到了一个关于c++11并发性的Youtube视频(第3部分)和以下代码,它在视频中编译并生成了正确的结果。但是,我在使用VisualStudio2012时遇到此代码的编译错误。编译器提示toSin(list&&)的参数类型.如果我将参数类型更改为list&,编译的代码。我的问题是move(list)返回了什么在_tmain(),它是右值引用还是只是一个引用?#include"stdafx.h"#include#include#include#include#includeusingnamespacestd;voidtoSin(list&&list){//this_thread::s

c++ - 这个 C++ 转换代码在做什么?

在这里找到:https://github.com/tpaviot/oce/blob/master/src/BRepAdaptor/BRepAdaptor_Curve.cxx我想知道的是:((GeomAdaptor_Curve*)(void*)&myCurve)->Load(C,First,Last);myCurve已定义为GeomAdaptor_Curve。所以它看起来像是将指向myCurve的指针转换为void*,然后将that转换为GeomAdaptor_Curve*,然后取消引用它并对其调用Load。这样做的可能原因是什么,而不是简单地调用myCurve.Load?

c# - c++0x 概念和 c# 约束有什么区别?

C++0x引入了概念,让您基本上可以定义一种类型。Itspecifiesthepropertiesrequiredofatype.C#允许您使用“where”子句指定泛型的约束。它们之间有语义上的区别吗?谢谢。 最佳答案 要记住的一件事是C++模板和C#泛型并不完全相同。看这个answer有关这些差异的更多详细信息。从您链接到解释C++0x概念的页面来看,听起来您的想法是在C++中您希望能够指定模板类型实现某些属性。在C#中,约束更进一步,并强制泛型类型“属于”该约束。例如,以下C#代码:publicGenericListwhere

c++ - 在 C++ 中返回假对象引用的规则

我想使用自定义容器遍历预分配的float组,该容器不拥有数据,但作用于数据的一部分。例如,命名容器类LinhaSobre:std::unique_ptrdata(newfloat[720]);...//createscontainertoiterate26floatsstartingfromfromdata[12]LinhaSobrecont(data.get()+12,26);//setsthoseelementsto1.5for(size_ti=0;i这是operator[]的可能实现://...//LinhaSobrehasamembermem0whichisinitialize

php - MongoDB findAndModify,在 PHP 中有一个实现吗?

我在PHP中寻找findAndModify语义但找不到,很乐意获得此功能的引用/示例。 最佳答案 这是JIRA问题是PHP驱动程序中缺少它,其中包括一个解决方法:It'sadatabasecommand,youcando:$db->command(array("findandmodify"=>"collectionName","query"=>...));Seehttp://www.mongodb.org/display/DOCS/findandmodify+Commandfordetails.

java - 既不是句法也不是语义的错误?

我在家庭作业中遇到了这个问题(别担心,已经完成了):[Usingyourfavoriteimperativelanguage,giveanexampleofeachof...]Anerrorthatthecompilercanneithercatchnoreasilygeneratecodetocatch(thisshouldbeaviolationofthelanguagedefinition,notjustaprogrambug)From"ProgrammingLanguagePragmatics"(3rded)MichaelL.Scott我的回答是,通过传入相同的参数(在C和Ja

java - "call stack"和 "thread stack"之间的区别

在Java多线程中,术语调用堆栈和线程堆栈之间是否存在语义差异? 最佳答案 每个线程都有自己的调用栈,“调用栈”和“线程栈”是一回事。称它为“线程堆栈”只是强调调用堆栈是特定于线程的。BillVennerscallsthistheJavastack:Whenanewthreadislaunched,theJavavirtualmachinecreatesanewJavastackforthethread.Asmentionedearlier,aJavastackstoresathread'sstateindiscreteframes

python - 分配 python 字典文字 : are the semantics guaranteed?

这个问题在这里已经有了答案:Isapythondictcomprehensionalways"lastwins"ifthereareduplicatekeys(3个答案)关闭3年前。简单问题:Python2.6.6(r266:84292,Aug92016,06:11:56)[GCC4.4.720120313(RedHat4.4.7-17)]onlinux2Type"help","copyright","credits"or"license"formoreinformation.>>>d={'foo':1,'foo':2}>>>printd{'foo':2}>>>d={'foo':2,'