value-initialization相关内容

值初始化和非 POD 类型

一个小时前我发布了一个答案 这里 根据我的说法是正确的.但是我的回答被 Martin B 否决了.他说 你很幸运并且得到了零,因为我放入的内存恰好是零初始化的.标准不保证这一点. 但是在阅读 Michael Burr 的回答这里并尝试以下示例代码后> 1) #include 结构 B { ~B();国际米;};int main(){B * b = 新 B();断言(b-> m == ..
发布时间:2021-12-22 18:17:46 C/C++开发

为什么这个简单的赋值是未定义的行为?

我正在刷新我对值初始化与默认初始化的理解,并且遇到了这个: struct C {整数 x;输入 y;C () { }};int主(){Cc = C();} 显然这是 UB 因为 在 C() 的情况下,有一个构造函数能够初始化 x 和 y 成员,因此不会发生初始化.因此,尝试将 C() 复制到 c 会导致未定义的行为. 我想我明白为什么,但我不确定.有人能详细说明一下吗? 这是 ..
发布时间:2021-09-13 20:41:07 C/C++开发

零初始化,静态初始化和价值初始化有何不同?

Ben Voigt 指出了 零初始化是静态初始化的步骤之一.但是您是对的,您不能盲目地替换后者(标签),因为对于值初始化也执行零初始化.但是,在C ++的上下文中,不需要进行零初始化(标记为零),因为静态初始化和值初始化都已经存在标记,并且它们更相关. 我认为在某些情况下,“零初始化" 而不是“静态初始化" 或还是“零初始化"永远不会在野外发生,并且我应该使用更具体的术语,例如:“静态初始 ..

值初始化是C ++ 98标准的一部分吗?如果不是,为什么将它添加到C ++ 03标准中?

干杯和健康. -Alf在答案中发表了评论,与C ++相比,值初始化可以说是C ++ 03的新功能. 98.我想知道他是什么意思. C ++ 98的值初始化的一部分吗?它在概念上存在但在名称上不存在吗?为什么将它添加到C ++ 03标准? 我有'03标准的副本,但没有'98标准的副本.这是默认初始化和值初始化的定义. 默认初始化T类型的对象的意思是: -如果T是非POD类类型 ..
发布时间:2020-04-27 04:57:23 C/C++开发

值初始化枚举的行为

首先,我想说,根据cppreference.com,有点不可能重新初始化枚举。 根据 http://en.cppreference.com/w/cpp/language/value_initialization ,值初始化枚举实际上执行零初始化。然后,根据 http://en.cppreference.com/w/cpp/语言/零初始化,零初始化枚举的效果是: 如果 T 是一个标量类型 ..

自动变量的值初始化

可能重复: 非可复制对象和值初始化:g ++ vs msvc 值初始化自动对象? 请考虑以下语句: 这不是真正可能的值初始化一个自动对象。 这句话是真的吗?我看到没有问题这样做: int main() { int i = int ); } 解决方案 c> value-initialization 定义在8.5 [dcl.init]段落1 ..
发布时间:2016-10-30 17:32:05 C/C++开发

“值初始化”是什么意思?

可能重复: 如果我有一个类,例如: class Info { int x; int y; }; 我用来创建一个对象, Info * p = new Info(); 信息旁边的括号是否意味着值初始化?与此不同的是, Info * p = new Info; ? 我知道有一个问题值初始化意味着将某些东西初始化为零? ..
发布时间:2016-10-17 10:18:27 C/C++开发

显式类型转换和多个简单类型说明符

要初始化类型 T 的对象的值,将按照以下之一的行处理: T x = T(); T x((T()));我的问题是关于通过简单类型说明符组合指定的类型,例如 unsigned int : unsigned int x = unsigned int(); unsigned int x((unsigned int())); Visual C ++ 2008和英特尔®C ++编 ..
发布时间:2016-10-13 10:33:22 C/C++开发

值初始化和非POD类型

一小时前我发布了一个答案这里根据我是正确的。但是我的回答被 Martin B 拒绝。他说 你只是幸运,并且得到零,因为我被置于的内存碰巧是零初始化。 但是在阅读Michael Burr的回答后,此处并尝试下面的示例代码 1) #include struct B {〜B(); int m; }; int main() { B * b ..
发布时间:2016-10-11 21:36:50 C/C++开发

内置类型有默认构造函数吗?

阅读此文章后,我指出 int()产生0,因为临时 int 是初始化的值,而不是因为 int()调用 int 。 (根据我的理解,这篇文章有缺陷。) 我也说过原始(内置)类型没有构造函数。原作者要求我检查Section $ 10.4.2(TC ++ PL),它说 内置类型也有默认构造函数但是我仍然认为语句“C ++允许甚至内置类型(原始类型)有默认的构造函数“。 我认为Bjarne ..
发布时间:2016-10-11 20:50:28 C/C++开发