变量初始化(指针和值)

2023-12-05

Foo f1 = Foo();      // (1) Ok
Foo f2 = Foo;        // (2) Compiler error

Foo *p1 = new Foo(); // (3) Ok
Foo *p2 = new Foo;   // (4) Ok. Why??

我想知道为什么有两种初始化指针的方法。看起来有点不一致。是否存在某种逻辑原因?如果有,是什么?或者,也许这是某种遗产?如果是这样,这种符号的起源是什么?


至少可以说,这有点……复杂。

当处理对象时,这两种表示法是等效的。当处理原始类型时(例如int), (3)将初始化(零填充)该值,而(4)不会(该值将保持未定义)。

对于自动分配的对象,这样:

Foo f1;

声明并初始化一个Foo使用默认构造函数的对象。这:

Foo f2 = Foo();

声明并初始化一个Foo使用复制构造函数的对象,本质上是复制临时对象的值(Foo()),它是使用默认构造函数构建的。

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

变量初始化(指针和值) 的相关文章

随机推荐

  • 使用 IComparer 而不是 OrderBy 对字典列表进行排序

    以下是我的收集以及数据 var data new List
  • 克隆gitlab项目,使用git lfs,无需一直提供密码

    我决定在 gitlab 上尝试 git lfs 我注意到它不适用于 ssh 所以我决定使用 https 推送工作得很好 但是当我尝试克隆我的项目时 它要求我输入用户名和密码every file 这有点烦人 有什么解决方法吗 编辑2018 这
  • 绑定 DataGridTemplateColumn 可见性

    我试图将数据网格中列的可见性绑定到 ViewModel 中的布尔 DependencyProperty 在本例中设置为视图 UserControl 的数据上下文 由于某种原因 我似乎不明白 它不起作用 查看此处后 我发现 datagridt
  • 如何将 OleVariant 转换为 IDispatch 派生?

    今天我带来了另一个让我头疼的问题 我确实将 DAO 3 6 类型库导入到我的 delphi 7 中 并且我开始看到许多有趣的接口 因此我面临着有趣的问题 每次类 Fields 出现在另一个类的属性上时 它们都有正确的定义 我的意思是 他被定
  • 使用单个更新查询从深层嵌套数组中删除多个元素

    我有以下类型的文件 id ObjectId 5c05984246a0201286d4b57a f x a onlineStore p s a t id 1 dateP 20200 09 20 did x dst y den z
  • new操作分配的内存是连续的吗?

    正如标题所说 我想知道在c 中 一个new操作分配的内存是否是连续的 BYTE data new BYTE size 在此代码中 无论给定大小 返回的内存区域都是连续的 如果堆管理器无法分配连续的内存size 失败了 异常 或 NULLma
  • 断言语句在 C++ 中不起作用[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在我的程序中使用断言时 我遇到了一个奇怪的问题 即使我添加一行代码 程序也不会终止assert false 但是assert当我编写几行示例代码时有效 有人知道为什么会发生吗 如果你
  • Terraform for-each 包含对象列表

    我在 Variables tf 文件中有以下变量 variable tenants description Map of project names to configuration type list object name string
  • 如何查找 SPFolder 中的项目计数?

    我有一个将项目存储在文件夹层次结构中的列表 我注意到SPFolder Files Count始终为零 有没有办法找出文件夹中有多少个列表项 我假设您正在寻找直接子项而不是后代 例如子文件夹中的项目 您是否还想在计数中包含子文件夹 在这种情况
  • 使用 Shiny 创建响应式 selectInput - flexdashboard

    我正在尝试在 Flexdashboard 文档中使用 Shiny 制作反应式 selectInput 我的第一次selectInput选择海洋公园中的区域类型 selectInput Zone label Marine Park Zonin
  • Windows PowerShell:更改命令提示符

    使用 Windows PowerShell 如何更改命令提示符 例如 默认提示是 PS C Documents and Settings govendes My Documents gt 我想自定义该字符串 只需将函数prompt在您的 P
  • 如何更改 pinax(0.9a2) 模板?

    我已经安装了带有 pinax bootstrap 主题的 pinax 0 9a2 现在我想自定义它并重新设计主题 但我在模板文件夹中没有找到任何 css 文件 那么如何自定义bootstrap主题的css呢 这就是我如何启动并运行我的基本
  • 按聚合动态列名匹配分组

    是否有可能group by使用 dplyr 对列名使用正则表达式匹配 library dplyr dplyr 0 5 0 R version 3 3 2 2016 10 31 dummy data set seed 1 df1 lt sam
  • 生锈的终身问题:借来的价值寿命不够长

    我在下面的简短代码中重现了我的问题 Problem The inner thread使用变量的引用v来自outer thread rust 编译器会抛出错误 因为 技术上 outer thread可以在之前终止inner thread因此i
  • 如何使用 CompletionStage 的集合很好地完成 allOf/AnyOf

    目前 要使用 CompletionStage 的集合做一些简单的事情需要跳过几个丑陋的圈子 public static CompletionStage
  • 使用 Lambda 删除重复项

    我需要一些帮助 使用 lambda 表达式来删除实体框架上下文中的重复条目 我有一个包含以下列的表 Id DateOfIncident Description EmployeeId IncidentTypeId and IsAttendan
  • 如何从带有空格分隔符的.txt 文件中读取数据?

    您好 我的文件中有每日数据 每日数据按月按列排列 开头有一些文件信息 数据如下 Day Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Year 01 15 2 12 3 9 96 10 1
  • 如何通过单击链接而不是提交按钮来发出 AJAX 请求

    如何通过单击链接而不是提交按钮来发出 AJAX 请求 我希望一旦单击链接即可从输入字段发布数据 selector click function e e preventDefault ajax url
  • 无法将类型系统 linq IQueryable 隐式转换为系统集合泛型 List

    无法从视图模型控制器获取数据到视图 我已正确检查 LINQpad 中查询的工作情况 但是我缺少可以在视图中显示的查询输出的转换 我有三个数据模型产品 图像 规格 我将它们合并到仅具有选定属性的 ViewModel 中 并希望显示相同的内容
  • 变量初始化(指针和值)

    Foo f1 Foo 1 Ok Foo f2 Foo 2 Compiler error Foo p1 new Foo 3 Ok Foo p2 new Foo 4 Ok Why 我想知道为什么有两种初始化指针的方法 看起来有点不一致 是否存在