显式调用时析构函数被调用两次

2023-11-30

我正在用这段代码尝试 C++ 中的析构函数:

#include <iostream>

struct temp
{
    ~temp() { std::cout << "Hello!" << std::endl; }
};

int main()
{
    temp t;
    t.~temp();
}

我看到“你好!”正在打印两次。析构函数的调用是否应该释放对象,并且当它超出范围时不应该再次调用析构函数?或者还有其他什么概念?

(我不打算在实践中这样做。我只是想了解这里发生了什么。)


它发生是因为你告诉它发生。自动变量的析构函数是always当变量超出范围时调用。你也这么叫了。总共有两个电话。

调用对象的析构函数并不向 C++ 发出不要再次调用它的信号,因为在正常执行中不需要跟踪。

解决方案是永远不要手动调用析构函数。

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

显式调用时析构函数被调用两次 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • ember 数据序列化器数据映射

    我正在使用 ember 和 ember data 尝试使用来自服务器的 json feed 这是我的代码 App Ember Application create DS RESTAdapter configure plurals categ
  • 从 pdf 中获取页面并使用 itext 将其保存为图像文件

    有一个pdf文件 我想将第二页作为图像导入并将其保存为jpeg文件 是否可能以及如何做到 这是我导入页面的代码 Document document new Document File file File createTempFile Pdf
  • C中Char到int的转换

    如果我想转换单个数字char为其数值 例如 如果 char c 5 而且我要c持有5代替 5 这样做是100 便携吗 c c 0 我听说所有字符集都按连续顺序存储数字 所以我假设是这样 但我想知道是否有一个有组织的库函数来执行此转换 以及按
  • 可空外键不好的做法?

    假设您有一个 Orders 表 其中包含一个指向 Customer Id 的外键 现在 假设您想添加一个没有客户 ID 的订单 这是否可能是另一个问题 您必须将外键设置为 NULL 这是不好的做法还是您宁愿使用之间的链接表订单和客户 虽然关
  • 如何对 DRF 中序列化器自定义字段的值进行排序

    我在客户端序列化程序中创建了一个自定义字段 该字段的值是通过复杂的序列化器方法计算的 class ClientsStatsSerializer serializers ModelSerializer Serializer shows tot
  • 计算大数据的相异矩阵

    我正在尝试基于具有数值和分类特征的大数据框架计算相异矩阵 当我运行daisy函数从集群包我收到错误消息 错误 无法分配大小为 X 的向量 就我而言 X 约为 800 GB 知道我该如何处理这个问题吗 此外 如果有人可以帮助我在并行核心中运行
  • Angular PrimeNG p-table:向特定列添加自定义排序功能

    我正在使用 PrimeNG 的 p 表 该表当前在两列上有默认排序 但第三列数据应该按状态排序 高 中 低 现在我需要对此列实现排序 但这必须是基于自定义逻辑的排序 我知道 p table 在表级别提供此功能 但我不确定在列级别 如下所示
  • 为什么包含prototype.js会破坏jquery bbq的功能?

    I have
  • IE < 9 不支持 $("").attr("src",something).load() ?

    http jsfiddle net DerekL qDqZF img attr src http derek1906 site50 net navbar images pic3 png load function body html don
  • 如何将文件复制/替换到 VB.NET 中的文件夹中?

    I used File Copy source target True where source是完整路径名 例如c source txt and target是一个文件夹 其中可能包含同名文件 我想复制source txt到目标文件夹并覆
  • 文件浏览器访问 Chrome 的沙盒文件系统

    我正在编写一个 Google Chrome 应用程序 它使用 HTML5 文件系统 API 在本地存储内容 有什么方法可以使用 Windows 资源管理器访问 Chrome 存储这些文件的目录 还是完全虚拟且无法从应用程序外部访问 我无法通
  • Android解析json树

    我有树形 JSON 结构数据 就像是 result id 1 name test1 id 2 name test12 children id 3 name test123 children id 4 name test123
  • 如何保护 Android 资产文件夹免受黑客攻击

    如何保护 Android 资产文件夹免受黑客攻击 有什么方法可以保护assets文件夹吗 您保存的任何内容Asset仅当您将其复制到内部或外部缓存目录中后才能访问该文件夹 因此 您无法同时保护它免受剥削者的侵害 但是 您可以将此文件夹中的任
  • 核心数据多线程取记录

    我对 CoreData 中的多线程有一个疑问 如果我们使用多线程 我们应该使用单独的 NSManagedObjectContext 来插入新数据或更新 否则我们可以使用父子上下文方法 但我只是创建新的 NSManagedObjectCont
  • string array[] = ""; 是什么意思?是什么意思以及为什么它有效?

    string array 我怎样才能分配一个const char 到一个数组 是不是等同于 string array 这对我来说是有意义的 然而 这仍然不起作用 int array 5 那么它们之间有什么区别 它不起作用int arrays
  • 如何在 PIVOT 中用 0 输出替换(空)值

    我尝试在 PIVOT 函数中将 空 值转换为 0 零 输出 但没有成功 下面是我尝试过的表格和语法 SELECT CLASS AZ CA TX FROM TEMP PIVOT SUM DATA FOR STATE IN AZ CA TX A
  • SQLiteException:不存在这样的表

    我试图在我的 Android 应用程序中创建一个 SQLite 数据库 但我的代码始终抛出 SQLiteException 表示不存在这样的表 我是 SQL 新手 但我认为这意味着我的创建脚本无法正常运行 我的部分代码如下 请指出您发现的任
  • Metro App 如何禁用 Gridview 滚动

    是否可以在 GridView 中禁用滚动 在 GridView 内部尝试一下
  • Flex/Flash可以录屏吗?

    这个问题非常简单 我实际上只想流式传输用户计算机的视频 就像从网络摄像头录制一样 但源来自桌面 想想 截屏工具 我特别想在纯 Flash 中执行此操作 无需下载或附加组件 对于 Google 来说 这将是一个简单的问题 但它对所有 导出到
  • 显式调用时析构函数被调用两次

    我正在用这段代码尝试 C 中的析构函数 include