腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
3
回答
C++销毁顺序:在类
析
构
函数之前调用字段
析
构
函数
、
、
有
方法
在类
析
构
函数之前调用字段
析
构
函数吗?:Small destructor 我需要在Small
析
构
函数之前调用Big
析
构
函数,因为它为Big
析
构
函数做了一些必要的清理。~Small()
析
构
函数。但是,->这会调用Small
析
构
函数两次:一次显式调用,一次在执行Big
析
<e
浏览 5
提问于2017-07-26
得票数 6
回答已采纳
16
回答
如果不应该在
析
构
函数中抛出异常,如何处理其中的错误?
、
、
、
大多数人说,永远不要从
析
构
函数中抛出异常,这样做会导致未定义的行为。Stroustrup指出,“向量
析
构
函数显式地为每个元素调用
析
构
函数。这意味着如果一个元素
析
构
函数抛出,向量销毁就会失败……实际上没有什么好的
方法
来防止从
析
构
函数引发的异常,因此库无法保证元素
析
构
函数抛出时是否会抛出”(参见附录E3.2)。似乎不是这样说的--抛出
析
构</
浏览 41
提问于2008-09-24
得票数 298
回答已采纳
2
回答
C++是否可以使
析
构
函数不调用类成员的
析
构
函数和基类的
析
构
函数?
是否有一种
方法
可以使类的
析
构
函数不调用某个类成员的
析
构
函数和/或不调用其基类的
析
构
函数? 如果这是不可能的,是否手动创建具有新位置和
析
构
(/不-
析
构
)的类成员是可能的解决办法?谢谢!编辑:我需要这样做的原因:C类拥有对象M有一个非平凡的
析
构
函数。C是M的朋友,以一种不需要调用M的
析
构
函数的方式来管理M。调用它
浏览 0
提问于2017-05-30
得票数 0
回答已采纳
2
回答
C++:调用临时对象的构造函数
、
假设我有以下内容: SomeClass();} 在没有优化的情况下,将调用SomeClass()构造函数,然后调用其
析
构
函数,对象将不再存在然而,根据IRC通道,如果编译器认为SomeClass构造函数/
析
构
函数没有副作用,那么构造函数/
析
构
函数调用可能会被优化掉。我认为最明显的
方法
是不使用构造函数/
析
构
函数(例如使用函数或静态
方法<
浏览 4
提问于2011-11-28
得票数 4
回答已采纳
3
回答
销毁二叉树中的节点
、
、
我使用new创建节点,但现在我想在
析
构
函数中删除它们: if (node !leftTree); delete node; }我在
析
构
函数中使用了这个
方法
BinaryTree::~BinaryTree(){ recu
浏览 7
提问于2021-04-17
得票数 0
回答已采纳
3
回答
是否优化了空
析
构
函数?
据我所知,空
方法
是编译的,但实际上并不称为:。 这是否意味着在使用空
析
构
函数时,仍将在Finalize队列中创建条目,但JIT将阻止调用该
方法
?
浏览 4
提问于2011-06-09
得票数 2
回答已采纳
2
回答
在失败的构造和销毁之间实现C++代码重用
它们在构造函数中分配,并根据RAII模式在
析
构
函数中释放。然而,分配不是原子的,如果构造函数的后期阶段失败,在向调用方抛出异常之前,有必要释放在早期阶段分配的所有资源。越来越多,这种边缘情况代码开始类似于
析
构
函数本身。我知道C++类能够调用它自己的
析
构
函数,而且因为
析
构
函数是用来处理移动操作留下的僵尸状态的实例,所以
析
构
函数在尝试释放它们之前已经检查了资源是否被实际分配了。那么,如果一个类在构造失败的情况下调用它的<
浏览 0
提问于2015-11-16
得票数 0
6
回答
Visual C#中没有
析
构
函数吗?
、
、
据我所知,C#中的
析
构
函数语法(~ClassName)是一种编写终结器的
方法
。此
方法
在编译为IL后成为Finalize
方法
。因此,这意味着C#编程语言确实支持
析
构
函数,但是作为.net框架的一部分,Visual C#不允许程序员使用它。 编辑:我知道可以使用IDisposable接口来清理非托管资源。问题不在于此。问题是Visual C#中是否有
析
构
函数?因为
析
构
函数的语法是一种编写终结器=>
浏览 5
提问于2011-05-05
得票数 0
回答已采纳
5
回答
为什么垃圾收集器以错误的顺序获取对象?
、
、
这两个类的
析
构
函数会对资源进行一些清理,但它们必须按正确的顺序调用,首先是A的
析
构
函数,然后是B的
析
构
函数。发生的事情是,B的
析
构
函数首先被调用,然后A的
析
构
函数崩溃,因为它试图从一个已释放的对象执行
方法
。 GC的这一行为是否正确?我希望GC检测到A引用了B,然后首先调用A
析
构
函数。我说的对吗?PD:如果对
析
构
函数/终
浏览 3
提问于2010-11-12
得票数 6
回答已采纳
2
回答
在包含静态字段的非静态类中触发
析
构
函数?
、
、
我想测试一个
析
构
函数何时在类中被调用,当它是一个简单的类时,每件事情都按预期进行--当我们离开实例的作用域
析
构
函数被调用时。public class HomeController : Controller // GET: Home { var ts = new Test(
浏览 0
提问于2019-09-14
得票数 2
回答已采纳
1
回答
Matlab:在清除期间没有调用类
析
构
函数吗?
、
、
例如:>> clear m 是否只有从han
浏览 20
提问于2012-12-27
得票数 15
回答已采纳
1
回答
C# -“
析
构
函数不是继承的”实际上是什么意思?
、
、
、
、
第10.13节
析
构
函数规定如下: ...the
析
构
函数.类被自动调用,并按顺序从派生最多的类调用到派生最少的类.我的问题是,“
析
构
函数不是继承的”
浏览 3
提问于2009-12-08
得票数 13
回答已采纳
5
回答
为什么不允许Finalize
方法
重写
、
我是.net ..and新手,我对C# ..please clarify中的
析
构
函数机制感到困惑。同样,当我们进入object类
浏览 0
提问于2010-04-07
得票数 5
1
回答
为什么虚拟类的
析
构
函数不自动添加到vtable中?
、
、
、
、
当虚拟类B派生自虚拟基类A时,除非在A和B中显式声明虚拟
析
构
函数,否则vtable中B的
析
构
函数将指向A的
析
构
函数。为什么?为什么B的vtable
析
构
函数不自动指向B的
析
构
函数而不必定义A和B虚拟
析
构
函数?编辑:意识到如果没有使A的
析
构
函数是虚拟的,B的
析
构
函数甚至不在vtable中,所以当调用A的
析<
浏览 0
提问于2018-04-14
得票数 1
回答已采纳
2
回答
从
析
构
函数停止线程的正确
方法
、
Stop
方法
设置一个事件并等待,直到线程终止(通过线程句柄上的WaitForSingleObject )。 在MyThread的
析
构
函数中,我调用了Stop
方法
。,然后再调用MyThread的
析
构
函数,对吧?因此,如果线程在ThreadFunction中执行for-loop,那么Stop
方法
将在a被
析
构
之后调用。一种解决方案是向调用Stop
方法
的class A添加
析
构
函数,如下所示
浏览 44
提问于2012-08-09
得票数 1
回答已采纳
1
回答
如何编写正确的
析
构
函数和终结器?
、
、
析
构
函数应该清理托管资源(删除Foo或Foo.Dispose()?)并调用终结器(根据)
析
构
函数将调用基类
析
构
函数(见第25页)。具有终结器的类应该始终有一个
析
构
函数(想必是为了决定性地清理非托管资源)。
浏览 3
提问于2013-10-28
得票数 7
3
回答
直接调用(虚拟)
析
构
函数有效吗?
、
、
在中,Ryan直接调用虚拟
析
构
函数。我在VS2010中测试了代码,它正确地调用了所有
析
构
函数(使用日志语句进行了测试)。这样做真的有效吗?这样的
方法
有什么问题、缺点,甚至是优点?我只能认为这是一种真正强制重置实际类型的
方法
,即使它们不覆盖虚拟reset函数,因为它们至少需要在
析
构
函数中清除。 另外,调用
析
构
函数会带来什么样的副作用?在这样的
析
构
函数调用之后使用对象是不是未定义的行为
浏览 7
提问于2011-05-18
得票数 7
3
回答
带Placement New的自定义
析
构
函数
、
、
当不再需要这个对象时,我显式地使用它的
析
构
函数,然后自己处理内存,正如web上的各种来源所描述的那样。然而,我不清楚编译器是否会为
析
构
函数调用生成任何额外的“后台魔法”,而不仅仅是为
析
构
函数内部的内容生成指令。实际的问题是:在“placement new”的情况下,会有什么阻止我使用“自定义
析
构
函数”而不是常规(~语法)
析
构
函数吗?简单的类
方法
,包含所有常见的
析
构
浏览 2
提问于2013-02-13
得票数 1
1
回答
如果调用了子类的
析
构
函数,是否可以停止对其基类的
析
构
函数的调用?
、
~D() { delete ad; ///...但在我看来,子类的
析
构
函数肯定会调用其基类的
析
构
函数。因此,不需要在类delete ab的
析
构
函数中添加D。更糟糕的是,delete一个对象两次是错误的。 但是,这段代码在我们的系统中很好地工作了很长一段时间,并且通过了我们的整个测试用例。因此,如果调用了子类的
析
构
函数,那么不管发生了什么,基类的
浏览 1
提问于2016-08-18
得票数 0
回答已采纳
1
回答
用户定义的类和std类之间有区别吗?
、
、
据我所知,构造函数/
析
构
函数调用方式的唯一区别在于实例化顺序。但是,在“普通”用户类和std中的类之间还有其他区别吗?这些对象的构造函数或
析
构
函数的调用方式有什么不同吗? 我问这个问题的主要原因是,根据 (30.3.2.3节),join()不是在线程
析
构
函数中调用的。您可以阅读为什么要使用。但是在 answer on stackoverflow中提到了将std::thread包装在另一个类中,然后在这个新包装器类的
析
构
函数中调用join()。
浏览 0
提问于2017-04-06
得票数 1
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
虚析构与纯虚析构(C+)
PHP就业快学课堂10,构造方法与析构方法
成都兄弟连最新PHP视频教程—PHP析构方法
成都兄弟连最新PHP视频教程—PHP析构方法回顾
当对象释放时,避免析构函数调用两次
热门
标签
更多标签
云服务器
ICP备案
对象存储
即时通信 IM
腾讯会议
活动推荐
运营活动
广告
关闭
领券