C++中对象的动态初始化是什么?

2024-03-20

C++中对象的动态初始化是什么?

请用一个简单的例子来解释...


动态初始化是指编译时初始化值未知的初始化。它在运行时计算以初始化变量。

Example,

int factorial(int n)
{
     if ( n < 0 )       return -1; //indicates input error
     else if ( n == 0 ) return 1;
     else               return n * factorial(n-1);
}

int const a = 10 ; //static initialization 
             //10 is known at compile time. Its 10!

int const b = factorial(8); //dynamic initialization 
                      //factorial(8) isn't known at compile time,
                      //rather it's computed at runtime.

即静态初始化usually涉及常量表达式(在编译时已知),而动态初始化涉及非常量表达式。

static int c;//this is also static initialization (with zero)!

C++ 标准 (2003) 的 §3.6.2/1 说:

具有静态存储期限的对象 (3.7.1) 应为零初始化 (8.5) 在任何其他初始化之前 发生。零初始化和 初始化与持续的 表达统称为静态初始化;所有其他 初始化是动态的 初始化.

所以有两种初始化:

  • 静态初始化:零初始化或使用常量表达式初始化
  • 任何其他初始化都是动态初始化。

另请注意,同一变量在静态初始化后可以动态初始化。例如,请参阅以下代码:

int d = factorial(8);
int main()
{
}

Since d是一个全局变量,它具有静态存储。这意味着,根据§3.6.2.1它在静态初始化阶段初始化为 0在进行任何其他初始化之前。然后,在运行时,它会使用函数返回的值动态初始化factorial().

这意味着,全局对象可以初始化两次:一次通过静态初始化(即零初始化),然后在运行时动态初始化它们。

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

C++中对象的动态初始化是什么? 的相关文章

随机推荐

  • 使用 Java 从 Keystore 中导入的证书获取公钥

    我已经创建并下载了证书销售队伍 https ap1 salesforce com 按照中的说明PicketLink 文档 https docs jboss org author display PLINK Picketlink as SP
  • 多租户:每个租户都有单独的数据库

    我们正在开发一个多租户应用程序 在架构方面 我们设计了共享中间层用于业务逻辑 每个租户一个数据库用于数据持久化 也就是说 业务层将为每个租户与数据库服务器建立一组连接 连接池 这意味着应用程序为每个租户维护单独的连接池 如果我们预计大约有
  • Android 画图 PorterDuff.Mode.CLEAR

    我正在开发在 Canvas 上绘图的应用程序 类似于 Android SDK 中的 Finger Paint 演示 我的问题是当我使用时PorterDuff Mode CLEAR 当绘图和画布时 如果我尝试擦除某些内容 它工作正常 但如果我
  • 声明参数化类型同义词的实例

    我有很多适用于向量的函数 即具有类型强制长度的列表 我试图让我的类型更容易编写 即而不是编写 foo Fold Integer v Map Integer Integer v v gt 我正在宣布一个新班级NList所以我可以写foo NL
  • Hibernate JPA 与 JTA 和 Glassfish 应用程序服务器似乎没有提交

    我是 hibernate 的新手 我希望它通过 JNDI 使用来自应用程序服务器的数据库连接 奇怪的是 它在数据库中创建我的表 但不保存实体 看来 它并没有承诺 有人在使用 hibernate 时遇到过类似的问题吗 这是一个小测试 serv
  • 如何将参数传递给graphql查询?

    我正在尝试在 Meteor blaze 项目中使用 Apollo graphql 我正在使用来自swydo blaze apollo 使用graphql查询从mongoDB获取数据就可以了 Using this one can get da
  • 使用 React Router V4 以编程方式导航

    我刚刚更换了react router从 v3 到 v4 但我不确定如何以编程方式在成员函数中导航Component 即在handleClick 我想要导航到的功能 path some where处理一些数据后 我曾经这样做过 import
  • 将 android studio 更新为花栗鼠后,导航组件方向生成的类中的构建时间错误

    在导航组件生成的所有 方向 类中将 android studio 更新为花栗鼠版本后 我收到 未解析的参考 R 构建时间错误 R 类未在该类中导入 尽管我可以手动导入它 但类将重新生成 而无需在下一个构建中导入 android gradle
  • Pytorch 分析器显示两个不同网络的卷积平均执行时间不同

    我有两个网络 我正在对它们进行分析以查看哪些操作占用了大部分时间 我注意到CUDA time avg为了aten conv2d不同网络的操作有所不同 这也增加了一个数量级 在我的第一个网络中 它是22us 而对于第二个网络则是3ms 我的第
  • 内蒂不写

    当尝试使用 netty 写入时 写入的数据永远不会在远程端结束 这已通过 Wireshark 确认 我努力了 Directly using writeAndFlush channel writeAndFlush new Packet Man
  • iOS,无法识别的选择器发送到实例?

    我有一个带有导入的自定义操作栏的主屏幕 我在单独的 xib 文件中创建了这个 actionBar 其中包含 m 和 h 文件 我在我的actionBar m中做了一些图形设置viewDidLoad like backgroundColor和
  • Swift 中可选的动态属性

    我正在尝试编译以下 Swift 类 class Waypoint NSObject dynamic var coordinate CLLocationCoordinate2D 但我收到以下编译器错误 属性无法标记为动态 因为其类型无法在 O
  • Excel VBA - 如何仅插入值?

    我正在寻找一种从其他工作簿复制范围 复制范围存在于 11 列和各种行 的方法 并仅在我的主工作簿中现有数据的下方插入 粘贴值 只是粘贴没有问题 但因为我不希望它覆盖最后一个 SUM 行 所以我想插入这些值 据我所知 没有像 InsertSp
  • 为什么在编程中使用常量? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从命令行提供当前目录

    有人可以给我一个提示 如何使用 ruby 从命令行提供当前目录吗 如果我可以有一些系统范围的配置 例如 mime 类型 并简单地从每个目录启动它 那就太好了 最简单的方法 谢谢亚伦 帕特森 https twitter com tenderl
  • Firefox 不显示网站图标

    Locked 有对该问题内容的争议 help locked posts此时正在解决 目前不接受新的答案或互动 I DO知道这个问题仅在这个网站上就被问了至少一千次 但我已经阅读了其中的许多主题 我确实认为自己知识渊博 很少问任何事情 而是更
  • 使用 R 和 ggplot 将 y 轴调整为 2x2 ANOVA 条形图时出现问题 [重复]

    这个问题在这里已经有答案了 我不是 Pro R 用户 但我已经尝试了多种方法 但找不到问题的解决方案 我根据此网站创建了 2x2 方差分析的条形图 包括误差线 APA 主题和自定义颜色 https sakaluk wordpress com
  • 获取 ref 参数的地址

    我的代码如下 class MyClass static int iField 42 static void Test ref int arg unsafe fixed void pField iField fixed void pArg a
  • 模拟授权属性的存在

    我想知道如何在 MVC3 中模拟使用 Authorize 属性装饰控制器 我正在使用自定义会员资格提供商 我想测试一个控制器是否已用该属性装饰 并且您已获得授权 以及如果您没有获得授权 会发生什么情况 我正在使用起订量 这方面有什么好的建议
  • C++中对象的动态初始化是什么?

    C 中对象的动态初始化是什么 请用一个简单的例子来解释 动态初始化是指编译时初始化值未知的初始化 它在运行时计算以初始化变量 Example int factorial int n if n lt 0 return 1 indicates