如何在C++中默认初始化内置类型的局部变量?

2023-11-29

如何在 C++ 中默认初始化原始类型的局部变量?例如,如果 a 有一个 typedef:

typedef unsigned char boolean;//that's Microsoft RPC runtime typedef

我想更改以下行:

boolean variable = 0; //initialize to some value to ensure reproduceable behavior
retrieveValue( &variable ); // do actual job

进入会自动默认初始化变量的东西 - 我不需要为其分配特定的值,但我只需要每次程序运行时将其初始化为相同的值 - 与构造函数相同的东西我可以在其中拥有初始化程序列表:

struct Struct {
   int Value;
   Struct() : Value() {}
};

and the Struct::Value每次构造实例时都会默认初始化为相同的值,但我从未在代码中写入实际值。

如何为局部变量获得相同的行为?


You can emulate该行为通过以下方式实现:

boolean x = boolean();

或者,更一般地说,

T x = T();

这将默认初始化x如果存在这样的默认初始化。然而,只是写T x无论你做什么,都永远不会对局部变量起作用。

您还可以使用 Placement-new 来调用“构造函数”,甚至对于 POD 也是如此:

T x;
new (&x) T();

请注意,此代码会为非 POD 类型(特别是具有重要析构函数的类型)产生未定义的行为。为了使此代码适用于用户定义的类型,我们首先需要调用对象的析构函数:

T x;
x.~T();
new (&x) T();

这个语法可以also用于 POD(由 §§5.2.4/12.4.15 保证),因此上述代码可以不加区别地用于any type.

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

如何在C++中默认初始化内置类型的局部变量? 的相关文章

随机推荐

  • 在 O(n) 时间内查找数组中的重复元素

    我在面试时被问到这个问题 我一直想知道正确的答案 您有一个从 0 到 n 1 的数字数组 其中一个数字被删除 并替换为数组中已有的数字 从而与该数字重复 我们怎样才能及时检测到这个重复项O n 例如 一个数组4 1 2 3会成为4 1 2
  • 无法从浏览器查看在 docker 容器中运行的 Rails 应用程序

    我正在 docker 容器中运行 Rails 应用程序 执行后docker compose up我在浏览器中查看并看到ERR CONNECTION REFUSED 我尝试过端口转发docker run p 3000 3000 docker
  • 使用 React.js 实现 SlideToggle 功能

    我想用我的下拉菜单完成以下任务 1 单击时显示 2 第二次单击时隐藏它 3 单击外部任意位置时将其隐藏 4 使用幻灯片效果完成所有这些 我已经覆盖了 1 3 个 我4号就被堵住了 如何创建幻灯片效果以及下面发生的以下单击事件 我已经使用 j
  • 如何在这个 ubuntu 终端命令中仅引用一次 Main:“javac Main.java && java Main”?

    我正在审查许多不同的 java 程序 并试图找出如何仅更新对程序名称的引用一次而不是两次 有没有办法在单个终端命令中使用变量 S 我试图改进的命令是这种形式 javac Main java java Main 我只想更改对 Main 的引用
  • 异步加载 - UITableView 和 Firebase

    我正在开发一个从 Firebase 加载列表数据并填充 UITableView 的项目 虽然我看到从我的 firebase 实例调用快照 但它们不会填充表 而本地同步 NSMutableArray 显示内容 如何让 UITableView
  • 使用 Python 3.x 还是 2.x? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 几个月前我开始学习 Pyt
  • python3.x 多处理循环没有“if __name__ == '__main__':”

    我有这个文件 它没有任何有用的工作 仅用于学习 import multiprocessing sys def parent numproc 2 print at start childs print bfore Pipe parentEnd
  • @ManagedBeans 在 JavaEE6 中是否因为 CDI/Weld 中的 @Named 而过时?

    由于 CDI 及其实现 Weld JEE6 中的每个 POJO 都可以用 Named 这使得视图可以访问 POJO 这是否意味着 ManagedBeans 现在已经完全过时了 或者我错过了什么地方 ManagedBean还有道理吗 简而言之
  • 通过键连接多个 Kafka 主题

    如何编写一个以可扩展的方式加入多个 Kafka 主题的消费者 我有一个主题发布带有密钥的事件 第二个主题发布与具有相同密钥的第一个主题的子集相关的其他事件 我想编写一个订阅这两个主题并为两个主题中出现的子集执行一些附加操作的消费者 我可以使
  • Spark:将大文件写入 HDFS 时不允许自我抑制

    我正在使用 Spark 将一个大文件写入 HDFS 基本上我所做的就是加入 3 个大文件 然后使用 toJSON 将结果数据帧转换为 json 然后使用 saveAsTextFile 将其保存到 HDFS 最终写入的文件大约为 4TB 应用
  • Java 8 LocalDate 不会解析有效的日期字符串[重复]

    这个问题在这里已经有答案了 这里是 Java 8 我有以下代码 final String createdDateStr 20110920 final DateTimeFormatter formatter DateTimeFormatter
  • Mac OS X 中的应用程序更新

    要在 Windows 中提供应用程序更新 我们只需下载安装程序并运行它即可 应用程序安装在 PROGRAMFILES 中 快捷方式放置在不同的地方 键和值被添加到注册表中 以在系统的程序列表中提供一个条目 为了在Linux中提供应用程序更新
  • 使用条件逻辑从 pandas df 创建多个列表[重复]

    这个问题在这里已经有答案了 我有一个看起来像这样的 df var1 var2 var3 0 a 1 0 b 7 0 c 5 0 d 4 0 z 8 1 t 9 1 a 2 2 p 3 60 c 3 我正在尝试创建每组值的列表var2对应于给
  • Swift 4:计时器崩溃 - 无法识别的选择器发送到实例

    我试图调用 Timer 的一个实例 并在每一秒过去时打印 一秒已过去 我正在关注 Udemy 上的完整 iOs 11 和 Swift 开发人员课程 教练确实这样做了 他的代码可以工作 但我的代码却崩溃了 这是代码 var timer Tim
  • 将csv数据转换为数组格式

    我正在尝试使用jquery 形成一个wordCloud 我有一个 csv 文件需要读取并使用该数据形成一个 wordCloud 我的 csv 文件中有列 text weight Lorem 15 Ipsum 9 等等 但输入数据需要采用以下
  • Protobuf-net .proto 文件生成用于继承

    我正在对 Protobuf net 进行原型设计 以替换我们现有的一些 C 代码 该代码当前正在使用 Datacontract 将对象序列化为 Xml 使用protobuffer我们可以轻松地与Java共享数据 因此 我对 Protobuf
  • scipy.spatial.ckdtree 运行缓慢

    我一直在使用spatial cKDTree in scipy计算点之间的距离 对于我的典型数据集 查找约 1000 个点到约 1e6 点数组的距离 它总是运行得非常快 约 1 秒 我在 Ubuntu 14 10 的计算机上以 python
  • iPhone 本地化 - 某些本地化的 XIB 无法加载

    我制作了一个具有本地化版本的 iPhone 应用程序 它大部分工作正常 但有两个视图无法加载本地化 NIB 使用标准 NIB 英文 我确信我正确地进行了本地化 获取信息 使文件可本地化 添加本地化 添加 pl 波兰语 然后编辑创建的 NIB
  • 替换嵌套数组 ruby​​ 中的元素

    我无法在代码中找到问题所在 如果特定元素出现在宾果板上 我想用 X 替换它们 class BingoBoard def initialize board bingo board board end def number letter let
  • 如何在C++中默认初始化内置类型的局部变量?

    如何在 C 中默认初始化原始类型的局部变量 例如 如果 a 有一个 typedef typedef unsigned char boolean that s Microsoft RPC runtime typedef 我想更改以下行 boo