腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
为什么虚拟类的析
构
函数
不自动添加到vtable中?
c++
、
polymorphism
、
virtual
、
destructor
、
vtable
当虚拟类B派生自虚拟基类A时,除非在A和B中显式声明虚拟析
构
函数
,否则vtable中B的析
构
函数
将指向A的析
构
函数
。为什么?为什么B的vtable析
构
函数
不自动指向B的析
构
函数
而不必定义A和B虚拟析
构
函数
?编辑:意识到如果没有使A的析
构
函数
是虚拟的,B的析
构
函数
甚至不在vtable中,所以当调用A的析
构
浏览 0
提问于2018-04-14
得票数 1
回答已采纳
1
回答
虽然我已经提供了移动构造
函数
,但还是调用了复制构造
函数
。
c++
、
visual-c++
、
copy-constructor
、
move-constructor
: 10释放nullptr数据的析
构
函数
移动构造
函数
-Moving资源: 20复制构造
函数
-deep副本: 10释放数据的析
构
函数
为: 10释放nullptr数据的析
构
函数
构造
函
浏览 11
提问于2022-05-12
得票数 0
回答已采纳
3
回答
C++销毁顺序:在类析
构
函数
之前调用字段析
构
函数
c++
、
destructor
、
object-destruction
有方法在类析
构
函数
之前调用字段析
构
函数
吗?< "Big destructor" << std::endl;} Small small;{}Big destructor我需要在Small析
构
函数
之前调用Big析<e
浏览 5
提问于2017-07-26
得票数 6
回答已采纳
1
回答
析
构
函数
是否根据标准有名称?
c++
“标准”没有明确规定析
构
函数
有或没有名称,但是有许多关于如何使用特殊语言引用和声明析
构
函数
的引用,其中没有一个直接引用析
构
函数
的名称。12.4.12: 在显式析
构
函数
调用中,析
构
函数
名称显示为~,后面跟着命名析
构
函数
类类型的类型名称。对析
构
函数
的调用受成员
函数
(9.3)通常的规则约束,也就是说,如果对象不是析
构</em
浏览 2
提问于2010-04-22
得票数 5
回答已采纳
16
回答
如果不应该在析
构
函数
中抛出异常,如何处理其中的错误?
c++
、
exception
、
destructor
、
raii
大多数人说,永远不要从析
构
函数
中抛出异常,这样做会导致未定义的行为。Stroustrup指出,“向量析
构
函数
显式地为每个元素调用析
构
函数
。这意味着如果一个元素析
构
函数
抛出,向量销毁就会失败……实际上没有什么好的方法来防止从析
构
函数
引发的异常,因此库无法保证元素析
构
函数
抛出时是否会抛出”(参见附录E3.2)。似乎不是这样说的--抛出析
构
函数
或多或少
浏览 41
提问于2008-09-24
得票数 298
回答已采纳
6
回答
何时不使用虚拟析
构
函数
?
c++
、
virtual-functions
我相信我曾多次搜索过虚拟析
构
函数
,大多数都提到了虚拟析
构
函数
的用途,以及为什么需要虚拟析
构
函数
。而且,我认为在大多数情况下,析
构
函数
需要是虚拟的。那么问题是:为什么c++在默认情况下不设置所有析
构
函数
?或在其他问题上:在这种情况下,我不应该使用虚拟析
构
函数
?如果我不需要使用虚拟析
构
函
浏览 0
提问于2015-05-21
得票数 64
1
回答
试图理解multimap为什么像它那样构造/下降
c++
、
constructor
、
destructor
、
multimap
test0 0x22ff24析
构
函数
称为TestObject: test0 0x22ff08单Iteration0析
构
函数
称为TestObject: test1 0x22ff24析
构
函数
称为TestObject: test2
浏览 3
提问于2012-02-13
得票数 1
回答已采纳
3
回答
基类没有析
构
函数
,但派生类有。我是否需要寻找与堆无关的陷阱?
c++
、
inheritance
、
destructor
在继承方面,我知道建议您的类的析
构
函数
是虚拟的,因此除了任何派生析
构
函数
之外,基类的析
构
函数
都会被正确调用。但是,我想知道在下面的场景中是否存在与派生对象相关的堆栈相关问题。让我们假设我们有一个基类,它没有析
构
函数
(不管出于什么原因):以及具有析
构
函数
的派生类:{};int main(
浏览 6
提问于2016-05-22
得票数 2
回答已采纳
2
回答
C++是否可以使析
构
函数
不调用类成员的析
构
函数
和基类的析
构
函数
?
c++
是否有一种方法可以使类的析
构
函数
不调用某个类成员的析
构
函数
和/或不调用其基类的析
构
函数
? 如果这是不可能的,是否手动创建具有新位置和析
构
(/不-析
构
)的类成员是可能的解决办法?谢谢!编辑:我需要这样做的原因:C类拥有对象M有一个非平凡的析
构
函数
。C是M的朋友,以一种不需要调用M的析
构
函数
的方式来管理M。调用它是可以的,但它意味着性能开销。(在这种情况下是个问题。
浏览 0
提问于2017-05-30
得票数 0
回答已采纳
1
回答
虚拟析
构
函数
在C++中的使用
c++
、
oop
、
constructor
、
virtual
、
destructor
虚拟析
构
函数
和纯虚拟析
构
函数
在C++中的应用是什么?我必须使用虚拟析
构
函数
而不是普通析
构
函数
的情况是什么?
浏览 0
提问于2020-03-26
得票数 2
1
回答
为什么C++中的默认用户定义析
构
函数
会增加执行时间?
c++
、
destructor
这个析
构
函数
的类被实例化超过200次,这增加了整个响应时间,当这个析
构
函数
被删除时,我观察到响应时间提高了28毫秒。有人能解释为什么这个时间差异,尽管这些只是默认的析
构
函数
,但由用户定义,编译器无论如何都会调用这些
函数
。在使用“用户定义的默认析
构
函数
”时,我指的是一个空的析
构
函数
:什么也不做,只是为了满足项目的标准而增加。为了增加更多的清晰度,这个析
构</
浏览 5
提问于2012-04-24
得票数 1
2
回答
为什么析
构
函数
和复制构造
函数
使用对象数组显示此行为?
c++
使用匿名对象初始化数组时,析
构
函数
显示有效值,但我使用对象创建数组,重写复制构造
函数
不调用,而且析
构
函数
也显示垃圾值。Check obj1(2);Check a[2] = {obj1,obj2}; 复制构造
函数
复制构造
函数
32649析
构
函数</e
浏览 0
提问于2019-03-28
得票数 0
回答已采纳
8
回答
默认析
构
函数
可以自动生成为虚拟析
构
函数
吗?
c++
、
destructor
默认析
构
函数
可以自动生成为虚拟析
构
函数
吗? 如果我定义了一个基类,但没有默认的析
构
函数
,是否会自动生成一个默认的虚拟析
构
函数
?
浏览 11
提问于2009-07-13
得票数 60
回答已采纳
3
回答
类对象向量中调用的额外析
构
函数
c++
pt.push_back(TestDelete(1));}2的TestDelete构造
函数
TestDelete析
构
函数
为2;TestDelete析
构</
浏览 3
提问于2013-05-23
得票数 2
3
回答
C++析
构
函数
是否总是或仅有时调用数据成员析
构
函数
?
c++
、
destructor
我试图验证我对C++析
构
函数
的理解。我的预感是,唯一理智的行为是,无论我是否提供自己的析
构
函数
,所有类字段都将被销毁。在这种情况下,我读了这么多次的声明实际上有点误导,可以更好地表述为: “无论您是否编写您自己的析
构
<em
浏览 4
提问于2013-11-09
得票数 10
回答已采纳
4
回答
当我需要声明自己的析
构
函数
时?
c++
、
oop
、
destructor
如果class不存在用户定义的析
构
函数
,并且需要一个析
构
函数
,则编译器隐式声明一个析
构
函数
。当我需要声明自己的析
构
函数
时?
浏览 1
提问于2011-10-24
得票数 3
回答已采纳
2
回答
C++:调用临时对象的构造
函数
c++
、
optimization
假设我有以下内容: SomeClass();} 在没有优化的情况下,将调用SomeClass()构造
函数
,然后调用其析
构
函数
,对象将不再存在然而,根据IRC通道,如果编译器认为SomeClass构造
函数
/析
构
函数
没有副作用,那么构造
函数
/析
构
函数
调用可能会被优化掉。我认为最明显的方法是不使用构造
函数
/析
构
<
浏览 4
提问于2011-11-28
得票数 4
回答已采纳
4
回答
4级继承链中的C++虚拟析
构
函数
。
c++
、
virtual-destructor
第一个实验-C有一个虚拟析
构
函数
//A具有非虚拟析
构
函数
**将
浏览 1
提问于2012-06-16
得票数 3
回答已采纳
2
回答
显式调用析
构
函数
c++
、
destructor
我理解在大多数情况下,我们不应该显式地调用析
构
函数
。示例:模板结构A{ ~A();};void f(A* p,A* q) {p->A::A();// OK:析
构
函数
调用q->A::~A();// OK:析
构
函数
call } 另一
浏览 5
提问于2013-05-23
得票数 48
回答已采纳
1
回答
空析
构
函数
与文字析
构
函数
c++
、
c++11
、
destructor
、
constexpr
、
user-defined-literals
; { return 0;如果我删除HERE行,代码可以很好地编译,但是如果我定义一个空的析
构
函数
为什么一个空的析
构
函数
和没有析
构
函数
有什么区别? 编辑:另一个相关问题:如果空的析
构
函数
和文本析
构
函数
不同,如何定义受保护的文本析
构
函数
?
浏览 0
提问于2013-01-10
得票数 16
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
当对象释放时,避免析构函数调用两次
比较 上下文管理器及构造/析构函数
第二部分:关于析构函数何时执行
虚析构与纯虚析构(C+)
质构分析仪
热门
标签
更多标签
云服务器
即时通信 IM
ICP备案
对象存储
实时音视频
活动推荐
运营活动
广告
关闭
领券