草庐IT

delete-operator

全部标签

c++ - 删除后的返回值;

假设我有一个A类classA{public:A(){};~A(){};boolfoo(int);};boolA::foo(inti){if(i==10){deletethis;returntrue;}returnfalse;}intmain(){A*pnt=newA();if(pnt->foo(10)){cout这可以吗,还是foo将返回true的未定义行为?我问的是在“deletethis;”之后成员函数会发生什么。 最佳答案 我在draft中搜索对于当前标准,另请阅读question在评论和常见问题解答中引用。我找不到任何元素说

c++ - std::function 的 operator== 的真正目的是什么?

我不止一次看到std::function的operator==被误用,我不得不解释它的真正用途是什么。为了有利于future读者的清晰起见,here是文档。上面提到的文档说:Comparesa std::function withanullpointer.Emptyfunctions(thatis,functionswithoutacallabletarget)compareequal,non-emptyfunctionscomparenon-equal.也就是说,std::function也有operatorbool()(here是文档),其行为方式几乎相同并且可以使用代替比较my_

c++ - 使用 FILE_FLAG_DELETE_ON_CLOSE 标志创建文件

在描述我的问题之前,这里是我正在编写的程序(IHExplorer.exe)的描述:这是一个C++应用程序。IHExplorer应用程序看起来尽可能像Windows资源管理器窗口。但有一个异常(exception),那就是从这个资源管理器窗口中启动文件会首先将它们解密到用户的临时文件夹,然后启动与文件扩展名关联的应用程序并在关闭时删除文件。我遇到的问题是文件关闭时自动删除。这是一个场景:用户在IHExplorer中双击加密的.txt文件。IHExplorer解密内存中的.txt文件,然后使用::CreateFile将其写入%TEMP%,它返回文件的句柄(IHExplorer必须至少保持此

c++ - 创建类索引器 operator[] 允许字符串参数(字符串索引)

我想用C++创建一个类。此类必须使用集合进行管理。好的,没问题,我当然想使用operator[],但在这种情况下,我希望不是按位置索引,而是按名称索引==>这意味着使用字符串索引器。似乎这种东西对我的编译器不太友好://Inhppclassmyclass{......std::stringoperator[](conststd::string&name);}//Incppstd::stringmyclass::operator[](conststd::string&name){...}//Inmainmyclassm;std::stringvalue=m["Name"];编译器告诉我他

c++ - 为什么 ostream::operator<< 是 char 参数的全局函数?

根据http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/operator 最佳答案 operator对于streambuf*(或int这听起来更简单)和char既可以作为成员(member)运营商实现,也可以作为非成员(member)(免费)运营商实现。我的猜测是,这是由于在定义C++时出现了追溯兼容性问题:可能较旧的代码依赖于成员operator,因此他们决定不将其作为免费运营商移动。C++标准库(以及STL)有许多像这样的不均匀性。

c++ - operator() 的典型用途是什么

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Howcanoverloadingoperator“functioncall”inC++beuseful?我经常看到括号运算符operator()在类或结构上被重载。我自己从来没有遇到过这样的需求,想知道这个运算符的典型用途/需求是什么?例如,重载operator==被接受为返回true或false,基于与提供的参数的某种相等性。这具有特定的可接受和预期的行为。

c++ - 重载、覆盖和替换新/删除的限制是什么?

我知道有3generalways修改C++中new和delete的行为:替换默认的new/delete和new[]/delete[]覆盖或重载放置版本(使用传递给它的内存位置覆盖版本,在创建传递其他类型或数量的参数的版本时重载)重载类特定版本。对new/delete的行为进行这些修改有什么限制?特别是对可以使用new和delete的签名有限制吗?如果任何替换版本必须具有相同的签名(否则它们不会被替换或会破坏其他代码,例如STL)是有意义的,但是是否允许全局放置或类特定版本返回智能例如指针或一些自定义句柄? 最佳答案 首先,不要将ne

c++ - OpenCV 错误 : Sizes of input arguments do not match (The operation is neither 'array op array' )

我正在做一个在树莓派上使用opencv的项目。我遇到了一个看起来很简单的障碍,但我无法解决问题。首先,这是我的代码的一部分:{gray=cvarrToMat(py);///cvShowImage("camcvWin",py);//displayonlygraychannelif(img_num%2==1){cv::imwrite("/home/pi/test/Gray_2Image1.jpg",gray);}elseif(img_num%2==0){cv::imwrite("/home/pi/test/Gray_2Image2.jpg",gray);cv::Matimg2=cv::im

c++ - 重载运算符(operator) body 的奥秘

假设我有以下类(class):树与树;对象树包含一个树对象数组。下面是Trees和Tree类的内容:树.h:#pragmaonce#include"Tree.h"classTrees{private:Treem_Tree[20];intiTrees;public:Trees(void):iTrees(0){}TreeGetTree(inti){returnm_Tree[i];}voidAddTree(Treetree){m_Tree[iTrees++]=tree;}};树.h:#pragmaonce#includeclassTree{private:std::stringName;bo

c++ - Boost 的属性树 : deleting a child knowing its path

是否可以轻松地从通过其路径已知的属性树中删除子项(及其最终的子项)?以下内容autochild=ptree.get_child(path);child.clear();实际上并没有删除子项,只是删除了它的内容。erase成员函数接受一个迭代器或一个键。我不知道有什么简单的方法可以找到与路径对应的迭代器,而无需遍历树。可以通过在点字符处拆分路径并删除剩余部分来找到“根”子级。然而,有没有更容易/更短的方式到达那里? 最佳答案 你可以这样做:ptree.get_child("path.to").erase("child");请注意,这会