将析构函数设置为私有有什么用?

2023-11-27

将析构函数设置为私有有什么用?


基本上,任何时候您希望其他类负责您的类对象的生命周期,或者您有理由阻止对象的销毁,您都可以将析构函数设为私有。

例如,如果您正在执行某种引用计数操作,则可以让对象(或已成为“好友”的管理器)负责计算对其自身的引用数量,并在数量为零时将其删除。当仍然有人引用它时,私人数据保护者会阻止其他任何人删除它。

再举个例子,如果您有一个对象,它的管理器(或其本身)可能会销毁它,或者可能会根据程序中的其他条件(例如打开的数据库连接或正在写入的文件)拒绝销毁它,该怎么办?您可以在类或管理器中使用“request_delete”方法来检查该条件,并且它将删除或拒绝,并返回一个状态告诉您它做了什么。这比仅仅调用“删除”要灵活得多。

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

将析构函数设置为私有有什么用? 的相关文章

  • 如何使用 ASP.NET MVC 进行 HTTP 调用?

    我正在尝试做的事情 我试图练习进行 HTTP 调用 如果这就是它的名字 来自一个简单的 ASP NET MVC Web 应用程序 为此 我尝试从以下位置获取天气详细信息打开天气地图 http openweathermap org appid
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • 如何在 MFC 中调整对话框大小时移动控件?

    我已经在 MFC 中创建了对话框视图 从下图中可以清楚地看到 如滑块控件和编辑框等 当我调整对话框大小时 这些控件不会移动 在此输入图像描述 https i stack imgur com 7OxAK jpg 我想移动控件以适应对话框 但不
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 如何从 List 中的字符串中删除数字/数字?

    我有一个字符串列表 List
  • 基于 MS Bot Framework 中的响应分支对话框/表单

    我们正在尝试使用 MS Bot Framework 但尚未完全弄清楚如何实现此场景 我们有一个 LUIS 对话框 类型 它工作正常并且经过适当的培训 以常见的三明治为例 LUIS 意图寻找的基本内容是用户询问订单状态 如果问题中提供了订单号
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • C 中“for”循环中的两个变量

    我正在编写一些代码 需要在其中使用两个变量for环形 下面的代码看起来没问题吗 它确实给了我预期的结果 for loop 1 offset loop 2 offset 2 loop 1 gt offset 190 loop 2 lt 190
  • 获取给定EntityType的导航属性

    我在用VS2010 EF4 0 需要如下功能 private string GetNaviProps Type entityType eg typeof Employee NorthwindEntities en new Northwind
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • std::string 在 Visual Studio 上的具体行为?

    我有一个项目需要读取 写入大文件 我决定使用 ifstream read 将这些文件一次性放入内存中 放入 std string 中 这似乎是在 C 中执行此操作的最快方法 http insanecoding blogspot com 20
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 需要使用 openssl 加密和解密文件的示例 C 代码

    我正在用 Linux C 编写代码 我需要使用以下命令来加密和解密文件 openssl 目前 我使用系统命令 des3 e nosalt k 0123456789012345 in inp file out out file 进行加密 使用
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString
  • 编译器可以报告未知属性的错误吗?即使有范围?

    在N3291 7 6 1 3 5 属性语法和语义 decl attr grammar 关于如何属性是用我读过的源代码写的 使用一个属性范围令牌是有条件支持的 实现定义的行为 and For an 属性标记本国际标准中未指定 该行为是实现定义

随机推荐

  • 如何以编程方式与应用程序交互

    我可能很快就会从事一些项目 在这些项目中 我需要从文件中获取数据并以编程方式将该数据输入到另一个第三方 不是我自己的 应用程序中 一个问题 我不知道如何做到这一点 我需要输入数据 例如时间表上的时间 任何人都可以引导我朝正确的方向发展以获取
  • 如何制作完美的方形图像/按钮

    我正在为 Android 设计一个基本的数独游戏 我想要一个 4x4 的表格 其中所有单元格都是正方形 我正在尝试使用 16 个按钮TableLayout 我的方式看起来像这样 它们的形状是矩形 my xml
  • 如果文件权限大于755,如何在Perl中检查?

    对于unix文件 我想知道Group或World是否对该文件有写权限 我一直在思考这些问题 my fpath orion properties my info stat fpath my retMode info gt mode retMo
  • 如何中断正在等待recv函数的线程? [复制]

    这个问题在这里已经有答案了 我有一个套接字侦听器 它挂在 recv 函数上 size t recvLen recv sock buf 512 0 我想通过中断来终止该线程 MSDN 说 发出阻塞 Winsock 调用时 比如recv Win
  • 根据key从多维数组中删除元素

    如何从给定键的多维数组中删除元素 我希望这是贪婪的 以便它删除数组中与我传入的键匹配的所有元素 到目前为止 我可以遍历多维数组 但我无法取消设置我需要的键因为我没有参考它 function traverseArray array keys
  • 从 Swift 中的“共享扩展”内部访问“UIApplication”的“共享”变量

    我需要从扩展内部执行我的主机应用程序 在Objective C我用过这个 Get UIApplication class name through ASCII Character codes NSString className NSStr
  • 如何在没有 mkl 的情况下安装 scipy

    现在我正在研究 Python 3 5 并尝试使用 Heroku 部署我的 Web 应用程序 当我尝试在线发布它时 Numpy mkl 与 Heroku 不兼容 它只能找到普通版本的 Numpy 所以我卸载 Numpy mkl 并安装普通的
  • grunt:可以为插件重新定位“node_modules”吗?

    如果我安装任何 grunt 插件 默认情况下它会添加到项目目录根目录中名为 node modules 的文件夹中 我的问题 是否可以将整个文件夹 以及所有插件 移动到另一个位置 但仍在我的项目文件夹中 比如说 build node modu
  • 使用 selenium 的 send_keys() 发送表情符号

    我想发送一个 heart 带有硒的表情符号send keys from selenium import webdriver from selenium webdriver support ui import WebDriverWait dr
  • Ruby on Rails:以表单形式提交数组

    我有一个模型 它的属性是数组 我从表单提交中填充该属性的正确方法是什么 我知道表单输入的名称包含括号的字段会根据输入创建哈希值 我是否应该在控制器中逐步执行它以将其按摩到数组中 使其不那么抽象的示例 class Article serial
  • 如何使用 Google 地图 API 获取本地业务结果

    是否有任何 google Yahoo Bing API 可以根据某个位置的邮政编码 地理代码提供本地业务结果 如果是 请告诉我 如果 Google 地图有此类服务 请告诉我在哪里可以获得相关参考信息 披露 我在 SerpApi 工作 是否有
  • 我应该采取哪些步骤来保护我的 Google 地图 API 密钥?

    我已为我的域获取了 Google 地图 API 密钥 我获取密钥时提供的示例显示了请求参数中嵌入的密钥 例如 我知道请求中的引荐来源网址字段必须与我的域匹配 使我的密钥在脚本标签等中可见是否安全 或者我还应该采取其他步骤吗 考虑到该密钥必须
  • javascript fizzbuzz switch 语句

    我目前正在参加关于 Javascript 的代码学院课程 并且我被 FizzBu zz 任务困住了 我需要从 1 到 20 数 如果这个数字可以被 3 print fizzbuzz 整除 可以被 5 print buzz 整除 可以被两个
  • Unity 和 ASP.NET WebForms - 没有为此对象定义无参数构造函数

    有谁有关于如何使 Unity 1 2 或 2 0 与 ASP NET WebForms 一起工作的好例子吗 我以为我已经弄清楚了 但显然我错过了一些东西 现在我收到错误 没有为此对象定义无参数构造函数 我记得几年前遇到过这个错误 我只是不记
  • 如何使用openpyxl读取xlsx颜色信息

    我正在使用 openpyxl 读取 Excel 文件 对于我的应用程序 我需要读取 xlsx 文件中单元格的背景颜色 但我找不到如何加载这些颜色信息 我尝试使用 cell style fill color index 但它只返回 FFFFF
  • MVC 2 beta 2 的 MicrosoftMvcJQueryValidation.js 正确版本在哪里?

    MicrosoftMvcJQueryValidation jsASP NET MVC 2 使用它进行客户端验证 该文件存在问题 无法正常工作 想知道是否版本错误 我使用的版本来自 futures 的来源 MicrosoftMvcJQuery
  • “window.open”被 Firefox 阻止

    I use window open并在文档中调用它ready事件 但它被 Firefox 中的弹出窗口阻止程序阻止 然后我将其添加到函数中 并从按钮调用该函数 然后触发按钮单击 但没有成功 function abcd function ab
  • 协调错误:有人遇到过错误消息被截断的问题吗?

    我再次来这里寻求帮助 这次我相信 鉴于我将涉及的问题的特殊性 很少有人会做出回应 我刚开始进入 DataSnap 的世界 但仍然有一些事情我不明白我将如何关联这个错误 我的Delphi是XE 版本1 Update1 我正在使用 Postgr
  • 在 iOS 中合并 2 个 pdf 文件

    我正在尝试在 iOS 中合并两个 PDF 文件 我正在逐页合并 如果文件很大 则需要花费很多时间 有什么办法 我们可以合并两个文件 而不是逐页合并 如果您愿意 我可以发布我的代码 我的代码类似于就这样 试试这个代码 它添加第一个 pdf 文
  • 将析构函数设置为私有有什么用?

    将析构函数设置为私有有什么用 基本上 任何时候您希望其他类负责您的类对象的生命周期 或者您有理由阻止对象的销毁 您都可以将析构函数设为私有 例如 如果您正在执行某种引用计数操作 则可以让对象 或已成为 好友 的管理器 负责计算对其自身的引用