腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(5393)
视频
沙龙
1
回答
异常
规范
如何
影响
虚拟
析
构
函数
重写?
、
、
、
、
C++标准对具有
异常
规范
的
虚拟
函数
声明如下: }; virtual void
浏览 2
提问于2010-07-12
得票数 14
回答已采纳
2
回答
gcc默认
析
构
函数
异常
规范
、
、
、
、
根据这个答案,编译器应该创建一个与基类的声明相匹配的默认构造
函数
。显然,这并不是新的gcc身上发生的事情。什么发生了变化,正确的编译器行为是什么,除了在派生类中手动添加空的
析
构
函数
(例如编译器标志)之外,是否有一些简单的解决方案来解决这个问题。
浏览 1
提问于2011-07-01
得票数 8
回答已采纳
1
回答
编译器用来决定移动操作是否安全的标准是什么?
、
、
:Foo()Foo::Foo()Foo::Foo(const Foo&)如果我删除自定义
析
构
函数
:Foo::Foo()Foo::Foo()Foo::Foo(Foo&&)当我声明一个
析
构
函数
时,
浏览 0
提问于2013-02-18
得票数 4
回答已采纳
2
回答
C++11中默认
虚拟
析
构
函数
的
异常
规范
是什么?
、
、
假设我有:{ virtual ~Foo()=default;默认
析
构
函数
的
异常
规范
是什么?默认
析
构
函数
是否等效于:oror virtual ~Foo() noexcept {};C++11标准的第15.4节说,它依赖于
析
构
函数
的隐式定义
浏览 3
提问于2012-05-24
得票数 9
1
回答
从std::streambuf继承时的不兼容
析
构
函数
编译器警告
、
、
、
当从std::streambuf继承时,我会收到一个ICL编译器警告,它说
析
构
函数
不兼容,我在这里做错了什么?使其成为
虚拟
析
构
函数
也不起作用。警告#809:
虚拟
函数
"CAbcBuffer::~CAbcBuffer“的
异常
规范
与重写
函数
"std::basic_streambuf<_Elem,_Traits>::~basic_streambuf和
浏览 3
提问于2014-03-01
得票数 2
回答已采纳
1
回答
编译错误松散抛出说明符,用于在HippoMocks中使用C++11成员的gtest派生类
、
、
、
松散抛出
虚拟
MyTestClass的说明符::~MyTestClass noexcept(false)错误
覆盖
“
虚拟
测试::测试::~Test() for除了(True)” 将所有派生
析
浏览 0
提问于2017-07-17
得票数 1
回答已采纳
2
回答
在派生类中哪个基类的
虚拟
析
构
函数
被
覆盖
、
、
、
、
new MostDerived(); Base* b = new MostDerived();} 在这两种情况下,都会调用Most导数的
析
构
函数
我想知道是否只需要大多数基类都有一个声明为
虚拟
的
析
构
函数
,而在这种情况下,所有从它继承的其他类都有
虚拟
析
构
函数
,如果您理解我的意思,它们将
覆盖
上游的每一个
析
浏览 0
提问于2018-01-26
得票数 3
回答已采纳
1
回答
可能违反了C++语言
规范
?
、
. */ };任何想法,特别是什么是错误的,或者我可以
如何
解决这一点是感激的。 谢谢
浏览 0
提问于2012-08-07
得票数 5
2
回答
c++标准节id,其中提到
析
构
函数
隐式不抛出。
、
、
、
、
我在某个地方读到,自c++11以来,
析
构
函数
被隐式声明为noexcept(true)。 没有
异常
规范
的
析
构
函数
的声明具有与隐式声明相同的
异常
规范
。但是,在标准中的任何地方,我都找不到一节,其中说
析
构
函数
是隐式noexcept(true)。有人能给我指一下我能找到这个信息的那部分吗?
浏览 4
提问于2015-01-20
得票数 6
回答已采纳
1
回答
C++:or,除了(或抛出())
虚拟
析
构
函数
=默认值;
、
下面的代码是合法的?{};class C virtual ~C() throw() = default;(反对抛出(),但我的编译器不支持‘t ;;)
浏览 8
提问于2014-01-19
得票数 5
回答已采纳
1
回答
派生类破坏的最佳实践是什么?
、
、
我们知道基类
析
构
函数
被标记为
虚拟
类,以便将派生类实例正确地销毁为基类型指针。那么,以下派生类
析
构
器实践之间有什么区别呢?~Derived();Destructor 简单
析
构
函数
:带有
覆盖
的~Derived() override;Default
析
构
函数
:~Derived() override = default;Virtual
析
构
浏览 1
提问于2020-07-13
得票数 0
回答已采纳
4
回答
非
虚拟
析
构
函数
c++的
异常
、
、
当我们超出catch块作用域时,会调用
异常
析
构
函数
吗?(万一我们不重新扔出去)...如果在超出捕获范围时应该调用
异常
析
构
函数
,那么在这种情况下,将只调用基类A的
析
构<
浏览 5
提问于2015-02-05
得票数 14
回答已采纳
4
回答
抽象类的
析
构
函数
应该是纯
虚拟
的吗?
、
、
、
我认为仅靠
虚拟
就足够了。还有更多的用途?
浏览 12
提问于2010-08-17
得票数 14
回答已采纳
2
回答
C++调用构造
函数
中的最终
虚拟
函数
、
、
、
确实,在构造
函数
和
析
构
函数
中调用
虚拟
函数
不是一个好做法,应该避免。这是因为
虚拟
函数
受到子类的
影响
,但是在构建或销毁阶段,子类还没有被构造(在构造中)或者已经被销毁(在
析
构
中)。但是,如果在构造
函数
或
析
构
函数
中调用
虚拟
最终
函数
,会发生什么情况?我认为应该没有问题,因为这在逻辑上不是错误的。在构造
浏览 1
提问于2018-11-25
得票数 0
回答已采纳
3
回答
在处理程序
函数
中引发的
异常
、
可以从我们的处理程序
函数
中抛出
异常
吗?答案是肯定的,一个错误确实可以被抛出。问题是,此
异常
必须存在于每个
异常
规范
中,这些
异常
规范
可能会被跨过,直到
异常
被捕获。对于大型系统,这相当于向每个
函数
添加
异常
规范
,除非您完全理解应用程序的动态。在
析
构
函数
中捕获所有
异常
也很重要;否则,在本例中,还将调用std::terminate()。作者
浏览 1
提问于2013-07-31
得票数 3
9
回答
难以理解C++的“
虚拟
人”
、
我非常了解C和Java,但我对C++还是新手#include <iostream> public:A::a被B::a成功
覆盖
,而不需要virtual。更让我困惑的是,这篇关于
虚拟
浏览 9
提问于2009-12-01
得票数 5
回答已采纳
2
回答
异常
行为C++14与C++98
、
、
、
我理解,每当发生任何
异常
以及任何destructor (堆栈展开过程中)抛出任何
异常
时,它都会终止应用程序。但是这里只有一次从try块抛出的
异常
,即从destructor引发的
异常
。
浏览 1
提问于2017-04-18
得票数 7
回答已采纳
1
回答
C# -“
析
构
函数
不是继承的”实际上是什么意思?
、
、
、
、
第10.13节
析
构
函数
规定如下: ...the
析
构
<em
浏览 3
提问于2009-12-08
得票数 13
回答已采纳
3
回答
直接调用(
虚拟
)
析
构
函数
有效吗?
、
、
在中,Ryan直接调用
虚拟
析
构
函数
。我在VS2010中测试了代码,它正确地调用了所有
析
构
函数
(使用日志语句进行了测试)。这样做真的有效吗?这样的方法有什么问题、缺点,甚至是优点?我只能认为这是一种真正强制重置实际类型的方法,即使它们不
覆盖
虚拟
reset
函数
,因为它们至少需要在
析
构
函数
中清除。 另外,调用
析
构
函数
浏览 7
提问于2011-05-18
得票数 7
2
回答
为什么std::exception
析
构
函数
不是noexcept
、
、
C++11 基类的不是noexcept,因此(在理论上)可能会抛出一个
异常
,从而放宽对其所有派生类(包括std::bad_alloc和std::runtime_error)的权限。然而,C++98 std::exception的
析
构
函数
有一个throw()
异常
规范
,这表明它不允许抛出
异常
。为什么会有不同?为什么现在允许抛出
异常
?让一个
异常
类的
析
构
函数
抛出一个
异常
通
浏览 0
提问于2018-04-25
得票数 1
点击加载更多
相关
资讯
C/C+编程笔记:一文带你读懂C+面向对象和Java面向对象的区别
比较 上下文管理器及构造/析构函数
AssetManager.finalize Timed Out 分析
系统学习PHP之面向对象(上)
C+堆,栈,RAII
热门
标签
更多标签
云服务器
ICP备案
实时音视频
即时通信 IM
对象存储
活动推荐
运营活动
广告
关闭
领券