草庐IT

Week_OF_Month

全部标签

C++ 11新特性之week_ptr

概述        在C++11标准中,智能指针的引入极大地提升了内存管理的安全性和便利性。除了已经广为人知的shared_ptr和unique_ptr之外,还有一个重要但相对较少被单独提及的智能指针类型——std::weak_ptr。std::weak_ptr是C++11引入的一种弱引用智能指针,它不拥有所指向对象的所有权,而是对shared_ptr持有的对象提供一种非拥有但可观察的访问方式。weak_ptr主要用于打破共享所有权循环引用的问题,防止出现内存泄漏。工作原理        1、不增加引用计数。        当创建一个weak_ptr时,它不会增加其所指向的对象的引用计数。这意

c++ - 在 C++ 中 : Is const reference means "read-only view of" or it requires immutability of object being referenced?

问题可以通过示例表述如下:这段代码有效吗?inta=1;constint&ca=a;++a;//对于MSVC和MinGW,上面的代码片段按预期工作:如果我查询ca后记,它返回2(即它被非常量引用更改)。但问题是:如何从标准的角度考虑这种情况?我们是否可以更改对象,我们有const引用(或者例如,我们必须将ca定义为constvolatile引用以使代码片段正确)?所以,如果上面的片段是正确的,那么这意味着,const引用并不能保证引用的对象是常量。它只是禁止我们通过给定的引用来更改它,即建立引用对象的“只读”View。这是正确的吗?编辑:感谢所有回答我问题的人。答案说明了事情,这对我来

c++ - template-parameter-list of template parameter 是什么意思

引用3.3.9/1中的一句话:Thedeclarativeregionofthenameofatemplateparameterofatemplatetemplate-parameteristhesmallesttemplate-parameter-listinwhichthenamewasintroduced.你能举个例子来理解上面的定义吗?我也想知道模板参数的模板参数列表是什么意思?示例会有所帮助。 最佳答案 template//thedeclarativeregionendshereclassq//hencethenamema

c++ - QLineEdit 与 QValidator : React to editing finished regardless of input validity?

QLineEdit有一个信号QLineEdit::editingFinished当用户完成编辑时发出,例如按回车键。但是,如果设置了验证器或输入掩码,则只有在输入有效时才会发出editingFinished。但是无论输入的有效性如何,我如何对用户完成编辑使用react?我是否必须手动检查输入、返回、小部件失去焦点等?这样做的原因:我想使用QDoubleValidator创建一个自定义小部件来编辑数字。当用户完成编辑并且输入无效(错误的范围、空文本……)时,我想将其重置为某个有效的默认值。像这样:classNumberEdit:publicQLineEdit{public:NumberE

c++ - 循环 : future iterations overwrite results of previous iterations 中的 If-else 条件

我尝试在items列表中突出显示selectedItem及其children。constQListitems=/*...*/;Item*selectedItem=/*...*/;Q_FOREACH(Item*item,items){if(selectedItem==item){item->setHighlightEnabled(true);//Highlightselecteditem}else{item->setHighlightEnabled(false);//De-highlightotheritems}}item->setHighlightEnabled方法递归地对子项执行相同

c# - C/C++/C# 设置窗口位置 : Window on top of others

我希望有人给出一个工作示例SetWindowPos关于如何使用C/C++/C#使窗口“最顶层”(位于最顶层并停留在那里)。提前致谢! 最佳答案 C/C++://Thisdoesn'tsizeormovethewindow,justmakesittop-most.SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); 关于c#-C/C++/C#设置窗口位置:Windowontopofothers,我们在StackOver

c++ - std::list of objects 效率

假设您有某个类的std::list。您可以通过两种方式制作此列表:1)std::listmyClassList;MyClassmyClass;myClassList.push_front(myClass);使用此方法,当您将对象传递给列表时,复制构造函数将被调用。如果该类有很多成员变量,并且您多次进行此调用,它的成本可能会很高。2)std::listmyClassList;MyClass*myClass=newMyClass();myClassList.push_front(myClass);这个方法不会调用类的复制构造函数。我不太确定在这种情况下会发生什么,但我认为该列表将创建一个新

c++ - 为什么我得到 "cannot allocate an array of constant size 0"?

这个问题在这里已经有了答案:WhathappensifIdefinea0-sizearrayinC/C++?(8个答案)关闭8年前。我正在为学校做一个扫雷程序,但我的代码中一直出现这个错误cannotallocateanarrayofconstantsize0我不知道为什么会这样;我没有分配大小——我将它设置为0。另一个问题是,我如何通过char读取我的输入char,这样我就可以将它保存在我的数组?正如您在下面看到的,我正在使用输入和输出。我评论了我的输入和输出,这样你们就可以看到我在这个程序中使用了什么。我想通过char读取char,这样我就可以将所有map保存在数组中。我正在使用M

c++ - Eye of Gnome - 使用 shell 脚本在不同窗口打开两个图像

这听起来像是一个愚蠢的问题,因为我尝试了一段时间来解决这个问题,但我不知道如何解决它。我有两个名为imagem.bmp和imagem2.bmp的图像以及一个应该使用gnome之眼打开这两个图像的shell脚本。我在脚本中写了这个:#!/usr/basheogimagem.bmpeogimagem2.bmp问题是只打开了一张图片,即eog打开第一张图片,然后在同一屏幕中加载第二张图片。我只需要在两个单独的屏幕中打开它,以便我可以比较图像。 最佳答案 帮助文本总是有用的:$eog--helpUsage:eog[OPTION...][FI

c++ - 错误 : invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator<<'

我想获取z_Data的第48个字符的第6位{charc=pPkt->z_Data[47];//thisz_Dataisacharbufferstd::cout>3)&1>4)&1>5)&1 最佳答案 优先级高于&,所以你需要:std::cout>3)&1)>4)&1)>5)&1) 关于c++-错误:invalidoperandsoftypes'int'and''tobinary'operator https://stackoverflow.com/questions/246