腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(6906)
视频
沙龙
2
回答
当使用受保护
的
非虚拟析构函数时,禁止
删除
-非虚拟-dtor警告。
c++
、
g++
我有一个纯抽象接口
类
,以及一个实现
该
接口
的
派生类
。因此,试图使用
基
类
指针
解构派生实例显然是未定义
的
行为
。main.cc:15:9: error:
删除
具有非虚拟析构函数
的
抽象
类
类型‘Foo’
的
对象将导致未定义
的
行为
-dtor= delete -非虚拟dtor
删除
f;^
通过
确保不尝试使用<
浏览 1
提问于2017-04-07
得票数 13
回答已采纳
4
回答
在
派生类
中分配时,
基
类
中
的
静态成员为空
c++
、
inheritance
、
static
我有一个带有静态
指针
成员
的
基
类
。当我在
派生类
中分配
该
静态
指针
成员时,
该
静态成员在从
基
类
的
方法中引用时显示为NULL。静态成员是指向
基
类</e
浏览 2
提问于2012-11-30
得票数 0
3
回答
下浇铸基本类型
c++
、
inheritance
在C++中,如果将
基
类
对象实例化为基本对象,并随后向下转换为派生对象,这
是否
是未定义
的
行为
? 当然,我会假设它肯定是未定义
的
行为
,因为
派生类
对象可能有
基
类
不存在
的
成员变量。因此,如果类实例化为
基
对象,那么这些变量实际上就不存在,
这
意味着
通过
派生类
指针
访问它们必须导致未定义
的
行为</em
浏览 4
提问于2011-05-11
得票数 4
回答已采纳
1
回答
C++ -
基
类
指针
,方法
指针
,引用
派生类
,方法?
c++
、
pointers
other.Run();我
的
问题是:当我
通过
提供方法
指针
指定要调用
的
方法时,如何实现类似的多态
行为
?如果我抛出方法
指针
浏览 2
提问于2014-04-01
得票数 1
回答已采纳
6
回答
纯抽象
类
的
虚拟析构函数
c++
、
abstract-class
、
virtual-destructor
基于我发现
的
和堆栈溢出上
的
其他链接,如果我们计划以多形性方式使用它,那么我们应该始终在
基
类
中定义一个虚拟析构函数。我想知道这条规则
是否
有例外。我已经看到了不为纯抽象
基
类
定义虚拟析构函数
的
生产
代码
,在cppcon 2014视频中,大约10:06定义
的
BoolExp结构是一个纯抽象
类
,没有虚拟析构函数。所以对于这样定义
的
纯抽象
类
浏览 1
提问于2019-07-30
得票数 5
回答已采纳
3
回答
在
派生类
中
是否
需要显式声明析构函数?
c++
、
virtual
、
destructor
考虑以下
代码
片段:{public:} {我可以很容易地找到有关
基
类
析构函数
的
信息,例如
通过
指向
基
的
指针
删除
对象会调用未定义
的
行为
,除非
基
类
中
的
析构函数是虚拟
的
浏览 6
提问于2014-02-13
得票数 4
回答已采纳
2
回答
这里没有定义虚拟析构函数。
c++
这
已在我
的
正式说明中提供,但我发现了一个错误。在我把它交给我
的
教练之前,我只是想和我所有的血亲们确认一下。ptr = new Derived ; delete ptr ;产出如下:Base class ,我认为问题在主函数
的
最后一行我
的
意思是,由于析构函数不是虚拟
的
,所以我认为您无法使用
基
类
类型
的
指针
删除
派生
浏览 7
提问于2015-04-05
得票数 1
3
回答
在继承中使用delete
的
意外
行为
,其中
基
指针
对象指向最派生
的
类
c++
、
class
、
polymorphism
、
virtual
在我
的
代码
中,我使用了三个
类
。Pain string salt,com;所有
类
都只有参数化构造函数。(到目前为止,它们还没有被宣布为虚拟)int main() Pain *p[2]; p[0]= new Comb("Salt","Com",2,110);,那么调用就会转到Comb
的
call()。(这个问题与疼痛::call()
是否
是虚拟
的
无关
浏览 0
提问于2013-08-21
得票数 0
回答已采纳
1
回答
删除
抽象
的
非虚拟dtor c++
c++
、
pointers
、
abstract-class
、
abstract-data-type
我有一个代表抽象数据类型‘包’
的
接口。为了实现
该
抽象数据类型,我使用了基于数组和基于链接
的
实现。在这里,
类
的
定义template<class ItemType> virtual> toVector() const = 0; virtual ~BagInterface() = default
浏览 5
提问于2020-10-15
得票数 1
回答已采纳
2
回答
派生对象地址到
基
指针
的
分配和析构函数
的
调用机制
c++
、
destructor
假设我有一个
基
类
指针
,
基
类
有虚函数。如果我使用
基
类
指针
指向
派生类
对象,那么编译器如何知道它是要调用
的
虚拟函数
的
派生版本,因为在赋值时,
派生类
地址将被转换为
基
类
类型,为什么编译器不会生成错误,因为两者
的
内存布局可能不同。另外,如果我声明了
基
类
析构函数为虚
的
,并且
删除</
浏览 0
提问于2012-12-31
得票数 0
4
回答
派生类
类型与
基
类
的
兼容性
是否
会导致内存泄漏?
c++
、
constructor
、
destructor
我知道
派生类
的
类型与指向其
基
类
的
指针
是兼容
的
。在给定
的
示例
代码
中,new bar对象构造先调用foo::foo(),然后调用bar::bar()。在各自
的
构造函数中,我将资源分配给
类
成员foo::int *a和bar::int *b。 现在我正在将这样构造
的
对象初始化为
基
类
类型。使用obj,我可以调用
基
类
析构函
浏览 0
提问于2011-01-06
得票数 1
回答已采纳
1
回答
在没有虚拟析构函数情况下
删除
novtable
基
类
的
行为
c++
、
visual-c++
、
declspec
据我所知,如果您在接口
指针
(或者更具体地说是指向
派生类
实例
的
基
类
指针
)上调用delete,并且
该
声明没有虚拟析构函数,那么产生
的
行为
是未定义
的
,派生对象
的
析构函数也不会被调用。ITestInferface *pThing = new Test(); delete *pThing; // undefined 通常,要么为
基
类
定义虚拟析构函数,要么
浏览 12
提问于2020-08-06
得票数 0
回答已采纳
4
回答
如果类至少包含一个虚拟函数,那么总是需要将析构函数声明为虚拟函数吗?
c++
可能重复: 如果一个
类
的
所有数据成员(具有虚拟函数)及其继承
的
类
都是非
指针
类型
的
(意味着它不能保存任何动态内存),那么
是否
需要将析构函数声明为虚拟
的
呢?
浏览 6
提问于2012-02-01
得票数 4
回答已采纳
1
回答
在C++0x中不工作
的
泛型
类
的
多态性
c++
、
templates
、
polymorphism
、
type-erasure
基本上,我从C++常见问题中了解到: 我需要一个模板
类
,它是由另
浏览 2
提问于2012-07-04
得票数 1
回答已采纳
4
回答
C++非抽象析构函数继承
c++
、
inheritance
、
c++11
我以前见过这样
的
问题,但不清楚,也不像我遇到
的
情况一样。 我有一个抽象
的
基
类
。它有一个受保护
的
构造函数和一个析构函数。它由几个完整类型继承,这些类型还具有公共构造函数和析构函数。如果对象被
基
类型引用,则
删除
对象不会调用子析构函数。我尝试过将所有的析构函数标记为虚拟
的
,但都没有成功。
基
类
析构函数不能是抽象
的
(这将解决调用问题,但不会解决
删除
问题)。
浏览 3
提问于2014-11-04
得票数 1
回答已采纳
2
回答
关于C++中
的
多形函数问题
c++
、
c++11
我有这样
的
代码
:class Base public: {the base objectHi thereHi there
这
并不是承认问候功能
的
多态性如果我将virtual关键字放在say_hello()函数中,
这
看起来会像预期
的</e
浏览 1
提问于2021-11-29
得票数 0
回答已采纳
5
回答
虚拟析构函数:如果
基
类
动态分配内存,
基
类
中
是否
需要?
c++
、
virtual-destructor
这个问题看起来像中
的
讨论他们说这是不正确
的
,因为这个
基
类
还应该定义一个虚拟析构函数,而不是普通
的
析构函数
浏览 21
提问于2012-09-07
得票数 0
1
回答
有“受保护
的
非虚拟破坏者”和“受保护
的
虚拟破坏者”有什么好处?
c++
、
polymorphism
从Herb Sutter
的
文章中,我可以看出这一点:#include <iostream>public:}
浏览 4
提问于2019-11-09
得票数 2
回答已采纳
1
回答
在抽象
基
类
中声明静态常量成员,将其赋值给
派生类
中
的
值?
c++
、
inheritance
、
static
、
constants
我有一个抽象
基
类
和从这个
基
类
派生
的
一对
类
。我想介绍一个static const成员,它在两个
派生类
之间具有不同
的
值,但是对于给定
派生类
的
所有实例具有相同
的
值。我有
代码
,它使用分配给两个
派生类
中
的
一个实例
的
基
类
指针
,这样我就可以
通过
更改
基
<e
浏览 3
提问于2014-09-23
得票数 2
回答已采纳
1
回答
当我将对象添加到一个向量中时,为什么typeid名称会发生变化?
c++
、
typeid
、
typeinfo
microsoft = new Microsoft();
这
基本上就是我想要做
的
name() == typeid(Sony).name()){ }我不能这样做,因为控制台
的
类型名称在我将其添加到
浏览 21
提问于2017-03-10
得票数 0
点击加载更多
热门
标签
更多标签
云服务器
对象存储
ICP备案
云点播
腾讯会议
活动推荐
运营活动
广告
关闭
领券