Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 派生的仅堆类_C++_Inheritance_Heap_Virtual_Destructor - Fatal编程技术网

C++ 派生的仅堆类

C++ 派生的仅堆类,c++,inheritance,heap,virtual,destructor,C++,Inheritance,Heap,Virtual,Destructor,因此,我正在阅读此链接中关于仅堆类的一篇文章: 我想创建一个基类,该基类仅由非虚拟成员函数销毁: Destroy(){删除此;} 我为类和两个受保护的构造函数以及destroy函数创建了一个受保护的虚拟析构函数,但我想确保所有继承的成员也只能从destroy()函数中销毁。如果可能的话,我希望他们也能实现自己的析构函数添加 有什么帮助吗 编辑:问题: 因此,我正在处理网络上的增量压缩(以及最终的相关性检查),并试图找到一个非常可维护/最佳的问题解决方案。我读了很多关于虚幻、地震、部落和其他人是

因此,我正在阅读此链接中关于仅堆类的一篇文章:

我想创建一个基类,该基类仅由非虚拟成员函数销毁:

Destroy(){删除此;}

我为类和两个受保护的构造函数以及destroy函数创建了一个受保护的虚拟析构函数,但我想确保所有继承的成员也只能从destroy()函数中销毁。如果可能的话,我希望他们也能实现自己的析构函数添加

有什么帮助吗

编辑:问题:

因此,我正在处理网络上的增量压缩(以及最终的相关性检查),并试图找到一个非常可维护/最佳的问题解决方案。我读了很多关于虚幻、地震、部落和其他人是如何解决这个问题的。我想跟踪代码之间的差异

我想到的一种方法是通过最少的更改来创建以节点树结构的类。然后,当某些内容发生更改时,它会在树中标记其传统,这样您就可以很容易地找到树上任何节点的差异


在写这篇文章的时候,我发现用这种方法跟踪差异和新节点很容易,但是在网络中删除节点有点奇怪。因此,我在一帧中将一组节点标记为“已删除”,以便可以通过网络发送此差异。;然后在清理/重置阶段,我的类删除节点会自动销毁/清理它们自己。

在我的职业生涯中,我想不出任何时候我需要使用
删除此
。这是个坏主意,到处都是红色的闪光灯。好吧,他们特别提到在一些不同的网站上这是一个有效的可能性。我相信它是用于在某种程度上“管理”自己内存(即共享指针实现)的对象,但我很好奇怎么做。如果你愿意,我可以在评论中解释我使用它的目的。共享指针不需要这样做。2.请吧。把它附在问题的末尾我很惊讶这是合法的。如果destroy是静态的,用指针指向要销毁的对象,我会感觉更好。但是,这可能意味着相同的机器代码……除了关于语言结构和设计模式之外,我也不是有意争论的;-)。。我仍然不明白为什么要阻止节点出现在堆栈上。强制执行仅堆分配是使用受保护的删除函数的唯一原因。事实上,这并不能免除您的代码对节点破坏的了解,但实际上会迫使代码考虑它(以破坏为伪装),因为它不再自动发生(通过堆栈或智能指针)。