相关疑难解决方法(0)

C++中的默认初始化

今天早上我问自己一些事情,我找不到正确"谷歌"的话:

让我们说:

struct Foo
{
  int bar;
};

struct Foo2
{
   int bar;
   Foo2() {}
};

struct Foo3
{
   int bar;
   Foo3() : bar(0) {}
};
Run Code Online (Sandbox Code Playgroud)

现在,如果我默认实例化Foo,Foo2并且Foo3:

Foo foo;
Foo2 foo2;
Foo3 foo3;
Run Code Online (Sandbox Code Playgroud)

在哪种情况下,bar会员是否正确初始化

(Foo3显然很明显地初始化它,并且只在这里显示明确差异Foo2所以问题主要是关于前两个.)

谢谢 !:)

c++ initialization pod

21
推荐指数
2
解决办法
7493
查看次数

值初始化和非POD类型

一个小时前我在这里发了一个答案,根据我的说法是正确的.然而我的回答却被Martin B贬低了.他说

你很幸运,并且因为我所处的内存恰好是零初始化而得到了零.标准不保证这一点.

然而读迈克尔·伯尔的回答后,这里并尝试下面的示例代码

1)

#include <cassert>

struct B { ~B(); int m; };

int main()
{
   B * b = new B();
   assert(b->m == 0);
}
Run Code Online (Sandbox Code Playgroud)

我在MSVC++ 2010上遇到调试错误.

我有一个类似的错误,当我尝试下面的代码[我的答案在这里 ]在MSVC++ 2010

2)

#include <cassert>
struct Struct {
    std::string String;
    int Int;
    bool k;
    // add add add
};

struct InStruct : Struct
{
   InStruct() : Struct() {}
};

int main()
{
   InStruct i;
   assert(i.k == 0);
}
Run Code Online (Sandbox Code Playgroud)

既没有(1)也没有(2)给gcc/Clang这样的错误让我想到MSVC++ …

c++ initialization visual-c++ value-initialization

17
推荐指数
2
解决办法
4884
查看次数

如何在不更改代码的情况下强制在Visual C++中强制POD类型的值初始化?

有没有办法强制0\false\nullptrVisual C++发布模式下初始化pod类型?

更具体地说,我不想更改我的代码,只需将其编译为初始化为的pod类型 0\false\nullptr.

我想要这个,因为我希望我们的系统是确定性的.

c++ msbuild pod visual-studio-2010

4
推荐指数
1
解决办法
602
查看次数

将类中的所有双精度初始化为零

我有一个只有双成员变量的结构,例如

struct foo { double a, b, c; };
Run Code Online (Sandbox Code Playgroud)

另一个类有一个std::vector<foo> v成员,它std::vector<foo>::vector(size_t)在初始化列表中调用构造函数.

我想做的是编写一个默认构造函数,foo以便将其中的所有双精度初始化为零,而不必编写

foo(): a(0), b(0), c(0) { }
Run Code Online (Sandbox Code Playgroud)

我一直需要添加更多变量foo,但将它们作为容器的元素是没有意义的std::array<double>,因为它们都有不同的用途.

c++ constructor initialization c++14

0
推荐指数
1
解决办法
159
查看次数