物体可以自我毁灭吗?

2024-02-17

我有一个需要自我毁灭的物体。

  • 能做到吗?

  • 例子有错吗?

    void Pawn::specialMoves(Coordinate const& from, Coordinate const& to, int passant)
    {
       /*...*/
        m_board->replace(to, new Queen(m_colour));//replace pawn by queen
    }
    
    void Board::replace(Coordinate const &to, Piece* newPiece)
    {
        delete tile[to.x()][to.y()];
        tile[to.x()][to.y()] = newPiece;
    }
    

是的,打电话是合法的delete this从成员函数内部。但有very很少有这样做的充分理由(特别是如果您正在编写惯用的 C++,其中大多数内存管理任务应委托给容器、智能指针等)。

你需要成为very小心:

  • 自杀对象必须是通过动态分配的new (not new[]).
  • 一旦一个对象自杀了,它做任何依赖于自身存在的事情(它不能再访问自己的成员变量,调用自己的虚函数等)都是未定义的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物体可以自我毁灭吗? 的相关文章

  • 将 C++ 代码(本机客户端)移植到浏览器(Web 应用程序)

    我有一个使用 Qt creator SDK 编写的 C 模块 我想将此代码移植到任何网页上运行 而不会对最终用户损害源代码 用户应该能够在任何浏览器 Chrome Firefox Safari Explorer 上看到此模块的输出 而无需安
  • 如何使用带有进度条的 HttpClient 下载文件?

    我创建了一个名为SiteDownload并添加了一些下载图像的链接 using System Collections Generic using System Linq using System Net using System Threa
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • 委托和接口如何互换使用?

    我可以使用接口方法代替委托吗 如何 我发现搜索接口方法比使用委托更快 我希望有一个简单的代码片段 理论上 可以通过包含单个方法的接口 例如 Java 没有委托 来完成委托完成的所有工作 然而 它使代码变得更加冗长并且没有带来什么好处 话又说
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • 找不到 HttpContextBase 命名空间

    public string GetCartId HttpContextBase context if context Session CartSessionKey null if string IsNullOrWhiteSpace cont
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • 如何在C中将2个4位无符号数组合成1个8位数

    我有 2 个 4 位数字 X0X1X2X3 和 Y0Y1Y2Y3 我想将它们组合起来 这样我就可以创建一个像这样的 8 位数字 X0X1X2X3 Y0Y1Y2Y3 gt X0Y0X1Y1X2Y2X3Y3 我知道如何连接它们以创建X0X1X1
  • 如何通过C#在SQLite数据库中写入变量DateTime值?

    我很新C and SQLite数据库并有一些变量存储在 SQLite 数据库中TimeStamp 这是我的代码 DateTime now DateTime Now m dbConnection new SQLiteConnection Da
  • 二元运算符重载、隐式类型转换

    class my bool private bool value public my bool bool value value value explicit operator bool return value friend my boo
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • 为什么 C++ 元组如此奇怪?

    我通常创建自定义structs将不同类型的值分组在一起时 这通常很好 而且我个人发现命名成员访问更容易阅读 但我想创建一个更通用的 API 在其他语言中广泛使用元组后 我想返回类型的值std tuple但发现它们在 C 中使用比在其他语言中
  • 将数组显式衰减为指针

    最简洁 最惯用的方式是什么明确地将数组衰减为指针 例如 考虑您需要能够指导 SFINAE 或明确过载的情况 template
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • Roslyn,通过 hostObject 传递值

    我正在尝试通过 hostObject 发送一个类 但显然它不想工作 using Roslyn Compilers using Roslyn Compilers CSharp using Roslyn Scripting using Rosl
  • 将 .NET 类库(主要定义 CRUD 操作)公开为服务

    公开现有内容的最佳 有效和最快的方法是什么 类 图书馆 主要定义 CRUD 操作 作为service 周转基金服务 or WCF数据服务 以便它可以与银光 or Ajax 在那儿tools 代码生成器 RAD 工具 哪些可以支持这个 预先感
  • 在运行时将项目添加到 ToolStrip

    您好 我有一个带有 收藏夹 菜单的 ToolStripMenu 我想在运行时在 WinForms 应用程序中添加子项目 我有一个 datagridview 右键单击它会显示一个包含 添加到收藏夹 选项的上下文菜单 当该事件被触发时 我想使用
  • 返回右值 - 这段代码有什么问题? [复制]

    这个问题在这里已经有答案了 我遇到了以下代码片段 std string test std string m Hello return std move m int main std string m test 我知道上面的代码是不正确且不安
  • 我应该为每个 Web 请求使用静态缓存的 ResourceManager 还是一个新实例?有关系吗?

    创建新的 NET 对性能 或其他 有何影响 如果有 ResourceManager根据每个请求new ResourceManger myResourceType FullName myResourceType Assembly 与在 Des

随机推荐

  • R: lapply 函数 - 跳过当前函数循环

    我正在对多个文件的列表使用 lapply 函数 有没有一种方法可以让我跳过当前文件上的函数而不返回任何内容 而直接跳到文件列表中的下一个文件 准确地说 我有一个 if 语句来检查条件 如果该语句返回 FALSE 我想跳到下一个文件 lapp
  • iTunes Connect:您的应用程序“*”(Apple ID:*)有一个或多个问题 - 电子邮件发送到整个用户列表、所有试飞用户,无论是什么应用程序

    今天 我通过 Xcode 向应用程序商店提交了一个新的测试应用程序 以便在 ItunesConnect 中查看 应用程序提交成功 但二进制文件在大约一分钟后被 ITC 拒绝 PNG 中具有 Alpha 通道的 AppIcons 存在问题 我
  • 如何在平面文件连接管理器上重新配置列信息?

    我有一个正在从平面文件读取数据的平面文件源 我们最近在此平面文件中添加了一个新列 平面文件数据被插入到数据库表中 为了适应目标组件中的新字段 我使用了ALTER TABLE语句将新列添加到表中 这是我所做的唯一改变 平面文件和目标组件之间的
  • 如何在sql server中获取分隔符之前的第一个值

    在其中一列中 我得到 2 个值 它们之间有一个分隔符 如何提取两个值 我有类似这个专栏的东西TRN02 is 115679 5757 我需要再次将分隔符之前和分隔符之后的值分成两个单独的列 有人可以帮我解决这个问题吗 您可以使用SUBSTR
  • 如何使用 Laravel 4.1 在字符串中查找#hashtags?

    我目前正在尝试过滤输入字符串以查找用户希望与其照片一起显示的单个主题标签 但是 我目前在数据库中插入的内容不正确 最好的情况是每个主题标签都保存在带有照片 ID 的新数据库行中 但是 我真的不知道该怎么做才能实现这一目标 hashtag n
  • 如何从带有 Array 属性的 Action 方法返回 Json?

    我正在尝试从操作方法返回一些 json 数据 我有一个员工对象 如下所示 public class Employee public int EmployeeID get set public string FirstName get set
  • JQuery UI 模式对话框使用 100% CPU

    当我在 IE8 中打开模态 JQuery 对话框时 我的 CPU 使用率达到 100 不 实际上是 50 但这是一个核心的 100 如果我破坏开发人员工具 似乎会触发很多调整大小事件 我不进行任何自愿调整大小 有其他人遇到过这个问题并且知道
  • 超时功能

    我想编写一个代码 要求输入用户名 但时间限制为 15 秒 如果用户超出限制并且无法输入名称 或任何字符串 则代码将终止并显示 超时 按摩 否则应保存名称并显示 谢谢 按摩 我曾尝试过这样的操作 但它是错误的并且不起作用 请给我一个解决方案
  • Xt 错误:如果使用默认显示,则无法打开显示

    Overview 我正在尝试让 XQuartz 在 OSX 上工作 这样我就可以通过 Docker 进行 X11 转发 我正在跟进此处的说明 https learning continuous deployment github io do
  • 如何将 Geodjango 与 Google Maps API 3 集成?

    我有一个包含多个字段的 geodjango 查询集 但只想使用user name and location 一个点字段 我想将其用作谷歌地图 API 3 中的标记 请耐心等待 因为我不懂 JavaScript 而且我有一系列问题 将此视为新
  • 复制工作表中的所有内容vba

    Copy wb Sheets wsSource Name Range A1 W79 Copy Paste Special wbTarget Sheets Sheet1 Range A1 W79 PasteSpecial xlValues w
  • 如何从堆栈历史记录中清除特定活动?

    假设我有一个应用程序 其中包含名为 A B C D 的活动 现在 考虑 A 已作为根活动启动 B 已从 A 启动 C 已从 B 启动 D 已从 C 启动 现在我在活动 D 中有一个名为 删除 的按钮 如果假设 我按下活动 D 中的 删除 按
  • 使用 Swift 从 Firebase 存储中检索图像

    我正在寻找从 Firebase 存储检索图像的开始到结束代码示例 只是为了显示图像 作为图像视图或表格 我看过这里的帖子和各种教程 总感觉好像漏掉了什么 如果我能看到全貌 我就能更好地理解这一点 所附代码是我当前尝试将 photo1 从本地
  • 安装VS2008后,在winnt.h中出现编译错误

    我正在尝试将我们的项目从 VS2005 转移到 VS2008 并且在 MFC 项目上遇到此构建错误 C Program Files Microsoft SDKs Windows v6 0A include winnt h 236 error
  • 此插件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器

    我收到标题中的错误 此附加组件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器 当我运行附加组件时 该插件用于创建时间触发器 我在 3 个文档中一起创建了 7 个触发器 现在我无法在任何文档中创建新的触发器 ScriptAp
  • 创建 SOAP 代理?

    我想创建一个 SOAP 代理 它修改原始 Web 服务 SOAP 标头 nampespace 并保持主体相同 做这个的最好方式是什么 创建一个 SOAP 提供程序 使用原始 Web 服务 然后修改标头和名称空间 这看起来工作量很大 如果您的
  • 通过 Javascript 获取图像的平均颜色

    不确定这是否可行 但希望编写一个返回平均值的脚本hex or rgb图像的值 我知道它可以在 AS 中完成 但希望在 JavaScript 中完成 AFAIK 做到这一点的唯一方法是
  • 更改 R 中 onRender() htmlWidgets 散点图中的线条粗细和不透明度

    我希望使用 R 包 htmlwidgets 的 onRender 函数绘制一个图 其中用户可以单击一个点并绘制一条线 我现在工作的关键是 以默认的粗细和默认的不透明度绘制一条灰线 然而 我一直坚持改变线条的粗细 并且可能改变线条的不透明度
  • 将 SpringBoot Api 部署到 IIS Web 服务器

    我使用 gradle build 创建了 spring boot api 在我当地一切正常 我在 IIS Web 服务器的 Sites DefaultsTest 中部署了角度应用程序 它运行在https example app com ap
  • 物体可以自我毁灭吗?

    我有一个需要自我毁灭的物体 能做到吗 例子有错吗 void Pawn specialMoves Coordinate const from Coordinate const to int passant m board gt replace