抽象类的析构函数应该是纯虚拟的吗?

2024-02-27

我认为单独虚拟通常就足够了。

除了强制派生类实现自己的析构函数之外,是否还有另一个原因使其成为纯虚拟的?我的意思是,如果你在类的构造函数中分配了一些东西,你应该实现你自己的析构函数 - 无论你的类是否是派生的。

正如我已经知道的那样,这不算是答案:如果您想要您的类抽象并且它没有纯虚函数 - 将其留给析构函数。

还有一些用途吗?


如果你想要你的类摘要和它 没有纯虚函数 - 离开 它传递给析构函数。

事实上,我不认为还有更多。纯虚析构函数所做的就是使整个类抽象。您必须提供纯虚拟析构函数以及非纯虚拟析构函数的实现,派生类的析构函数是单独的虚拟析构函数,等等。

基本上,如果一个类已经有一些纯虚函数,那么它的行为将与虚函数和纯虚析构函数等效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽象类的析构函数应该是纯虚拟的吗? 的相关文章

  • 如何拦截 .Net 中第三方库对非虚拟方法的调用?

    我认为我需要的是 net 人们称之为 透明动态代理 的东西 但到目前为止我所看到的所有实现 Castle DynamicProxy Spring NET AOP 等 都要求我至少执行以下操作之一 将拦截的方法声明为虚拟方法 包装类并创建包装
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 将数组从 C# 编组到 C++ 并返回:PInvokeStackImbalance

    我有一个 C 函数 我想从 C 访问它 问题是我不断收到 PInvokeStackImbalance 异常 但我不知道为什么 当检查异常被关闭时 一切都运行良好并且符合预期 我的 C 函数的签名是 extern C double solve
  • VBA 中的 VSTO:AddIn.Object 有时不返回任何内容 (null)

    Given VSTO 插件 An override object RequestComAddInAutomationService 它返回一个名为的类的实例Facade在我的场景中 Excel 2007 中的 VBA 宏可访问AddIn O
  • 覆盖Java中的属性[重复]

    这个问题在这里已经有答案了 在 Java 中 我最近有几个项目 我使用了这样的设计模式 public abstract class A public abstract int getProperty public class B exten
  • C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

    我使用此代码将非托管代码中的 IntPtr 缓冲区中的字节保存到文件中 这是一个简单的回调函数 private void callback IntPtr buffer int length byte bytes new byte lengt
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 使用 Thread.Sleep() 时,异步编程如何与线程一起工作?

    假设 前言 在之前的问题中 我们注意到Thread Sleep阻塞线程参见 什么时候使用Task Delay 什么时候使用Thread Sleep https stackoverflow com questions 20082221 whe
  • 使用 C 创建立体声正弦波

    我正在尝试用 C 创建立体声正弦 WAV 并且可能有不同的 可能是空白的 左声道和右声道 使用此函数为每个通道生成一个音调 int16 t create tone float frequency float amplitude float
  • c#Registry to XML无效字符问题

    我在尝试从注册表创建 XML 文件时遇到问题 在我的笔记本电脑 W7 64b 上它工作正常 生成了 xml 文件 但在另一台计算机 Xp 32b 上抛出异常 System ArgumentException 十六进制值 0x00 是无效字符
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • #define, #ifdef #undef #endif

    我有以下代码 define PROC ADD void main void while 1 ifdef PROC ADD Do this code here then undefined it to run the code in the
  • Yield Return == IEnumerable 和 IEnumerator 吗?

    Is yield return实施的捷径IEnumerable and IEnumerator 是的 您可以在我的书 C in Depth 的第 6 章中找到更多相关信息 幸好第六章是免费提供 http www manning source
  • 如何并排显示 4 个三角形图案

    我无法让 4 个不同的三角形图案并排出现 这是一个控制台应用程序 这正是我试图通过使用嵌套 for 循环来实现的目标
  • 当另一个进程使用 std::fstream 写入文件时从文件读取[重复]

    这个问题在这里已经有答案了 我需要从文件中逐行读取 它是由 std getline 完成的 另一个进程的问题是一直向其附加数据 然后我需要读取新行 例如 文件一开始包含10行 我的程序读取了10行 那么我的程序应该等待 过了一会儿 另一个进

随机推荐

  • Ruby on Rails:使用控制器、操作和参数获取路线

    我对 RoR 很陌生 我正在寻找一种获取给定控制器 操作和参数的路线的方法 类似于 url for 但没有域和协议 可以说我有 params controller gt controller action gt edit project i
  • DisplayMemberPath串联

    我正在尝试将两个值绑定到 ComboBox 显示值 但我不知道该怎么做 这种方法行不通 cboRegion DisplayMemberPath idregion description 有谁知道如何在 C 中做到这一点 不幸的是 这是不可能
  • 如何从 sfUser 获取 id?

    我正在使用 symfony 1 4 我使用 sfDoctrineGuardPlugin 作为身份验证工具 我想捕获用户的 ID 以便将其存储在我的表中 经过一番小研究 我想我必须使用这个表达方式 getUser gt getGuardUse
  • 如何检测我是否处于“控制台”模式

    我正在编写一个从浏览器运行的应用程序 然而 一些模型函数也是从 Yii2 控制台调用的 因此 我在尝试访问 GUI 中设置的变量时遇到错误 是否可以知道我处于哪种模式 是否自动设置了一些环境变量 或者我应该在控制台应用程序中设置一些会话变量
  • 如何使用 MVC5 和实体框架使用自定义属性更新 IdentityUser

    我正在使用内置的身份框架进行用户管理 并且想向 AspNetUsers 表添加一些自定义项 到目前为止 我遇到的每个问题的解决方案都会导致另一个问题 如果我对用户模型进行更改 例如 通过在 AspNetUsers 表中添加邮政编码属性和匹配
  • 加载密钥“(stdin)”时出错:格式无效 Gitlab CI

    这是我关于 gitlab ci 的 ssh 的 yaml 文件的一部分 eval ssh agent s echo SSH PRIVATE KEY tr d r ssh add gt dev null mkdir p ssh chmod 7
  • 使用 Python 将 XML 文档插入现有 XML

    给定这些 XML 文档 文件1
  • ASP.NET MVC 4.0 控制器和 MEF,如何将这两者结合在一起?

    我正在尝试使用 MEF 创建 ASP NET MVC 模块 虽然到目前为止我在不使用 MVC 的情况下使用 MEF 没有任何问题 但在导出控制器时我遇到了一些困难 我用这种方法作为例子http kennytordeur blogspot d
  • 如何快速识别 Snakemake 中的规则是否需要输入函数

    我正在关注其文档页面上的 Snakemake 教程 并且确实陷入了输入函数的概念https snakemake readthedocs io en stable tutorial advanced html step 3 input fun
  • 未定义符号:_ZdlPvm

    我在用阿波罗咖啡 https github com Russell91 apollocaffe and 重新检查 https github com Russell91 ReInspect Apollocaffe在 c 库中并且Reinspe
  • Ruby:反转哈希以保留非唯一值

    我有一个看起来像这样的哈希 a gt 1 2 3 b gt 4 5 6 c gt 3 4 5 d gt 7 2 3 我想要做的是使用包含它的所有键的数组对所有现有值进行哈希 例如把上面的变成这样 1 gt a 2 gt a d 3 gt a
  • 您可以从 iPhone 应用程序下载 PDF 格式的内容吗

    是否可以将 iPhone 应用程序中的特定屏幕下载为 PDF 格式 我检查了 iphone 开发者门户和很多其他地方 但找不到答案 我想做的就是单击一个按钮 然后将该屏幕下载为 pdf 并将其存储在某个位置 这可能吗 如果是这样 您会将其存
  • 您对 iAd 和 adSense 有何建议 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑在我的应用程序中添加一个添加项 在 iAd 和 adSense 之间 您会向我推荐哪种广告计划
  • 使用未记录的“Application.Trim”并了解 VBA 智能感知建议

    当我用谷歌搜索时Trim 我发现它是一个Excel函数 也是一个VBA函数 在这两种情况下的 VBA 中 它只能与一个单元格一起使用 并且需要对多个单元格的范围进行循环 但是 我发现一些网页说明了使用Application Trim在没有循
  • 如何从java代码运行gradle任务?

    我需要从 java 方法将 gradle eclipse 任务运行到外部 gradle 项目 是否可以使用 Gradle Tooling API 来完成此操作 The 摇篮论坛 https discuss gradle org t exec
  • 如何同时使用 Mercurial 和 svn

    工作中的 SVN 存储库只能在内部访问 至少对于作为承包商的我来说 不工作的时候 我想使用HG 然后第二天与SVN同步 是否建议同时使用两者 有什么问题应该注意吗 The 使用 Subversion https www mercurial
  • 找不到记录器的处理程序

    我是Python新手 我正在尝试登录 python 我遇到了找不到记录器的处理程序尝试通过记录器实例打印一些警告时出错 下面是我尝试过的代码 import logging logger logging getLogger logger lo
  • 获取 UICollectionView 中 Scroll 的总高度?

    我有一个UICollectionView我想在加载内容时调整大小 高度 这个想法是高度应该扩大 以便所有 UICollectionView 单元格都可见 我想知道是否可以获得 内容 大小或滚动高度 Thanks CGFloat height
  • Android Gradle 1.1 - 添加对另一个项目测试的测试依赖项

    我有2个模块 A and B A是一个独立的模块 它的测试本身运行得很好 B是一个依赖模块 它的测试需要某个文件A的测试文件夹 一个测试文件位于B延伸一英寸A 以下是我认为的相关部分B s build gradle android sour
  • 抽象类的析构函数应该是纯虚拟的吗?

    我认为单独虚拟通常就足够了 除了强制派生类实现自己的析构函数之外 是否还有另一个原因使其成为纯虚拟的 我的意思是 如果你在类的构造函数中分配了一些东西 你应该实现你自己的析构函数 无论你的类是否是派生的 正如我已经知道的那样 这不算是答案