相关疑难解决方法(0)

是否默认将C++结构的成员初始化为0?

我有这个struct:

struct Snapshot
{
    double x; 
    int y;
};
Run Code Online (Sandbox Code Playgroud)

我希望x并且y为0.默认情况下它们是0还是我必须这样做:

Snapshot s = {0,0};
Run Code Online (Sandbox Code Playgroud)

将结构归零的其他方法是什么?

c++

189
推荐指数
5
解决办法
14万
查看次数

以下短语在C++中的含义是什么:零,默认和值初始化?

以下短语在C++中的含义是什么:

  • 零初始化,

  • 默认初始化,和

  • 值初始化

C++开发人员应该了解他们什么?

c++ initialization c++-faq

183
推荐指数
2
解决办法
3万
查看次数

167
推荐指数
4
解决办法
7万
查看次数

我是否必须初始化简单的类成员变量?

快速初学者的问题:

是否必须初始化简单的类成员变量,或者它们是否保证在任何情况下都被赋予默认值?

例:

class Foo {
  int i;
  // is i==0 or do I need the following line for that?
  Foo() : i(0) {}
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ variables initialization class

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

是否为成员变量自动调用默认构造函数?

说我有这个班:

//Awesome.h
class Awesome
{
    public:
        Awesome();
    private:
        membertype member;
}

//Awesome.cpp
#include "Awesome.h"

Awesome::Awesome()
:member()
{
}
Run Code Online (Sandbox Code Playgroud)

如果省略member()构造函数的初始化列表中Awesome,是否会member自动调用构造函数?它是否仅在我不包含member在初始化列表中时调用?

c++ constructor header

13
推荐指数
2
解决办法
7531
查看次数

在C++中,如果我们没有在构造函数中初始化数据成员,那么数据成员的值是什么?

我的问题是关于类数据成员的初始化.我想知道初始化规则,例如内置类型(int,double,float)和用户定义类型.如果我们没有初始化它们,它们的内容是未定义的,还是会使用默认的构造函数?

c++ constructor class

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

什么会导致类中的数据成员初始化为零?

默认构造函数不应将任何数据成员归零。但是在某些情况下,似乎并非如此。

代码示例很简短。

#include <iostream>

using namespace std;

class Foo {
public:
  int val;
  Foo() = default;
};

int main() {
  Foo bar;
  if (bar.val != 0) {
    cout << "true" << endl;
  } else {
    cout << "false" << endl;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为例外,以上程序输出:

true
Run Code Online (Sandbox Code Playgroud)

但是,如果添加了bar数据成员的打印语句,则该var成员将被初始化为零:

...
int main() {
  Foo bar;
  cout << bar.val << endl;
  ...
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

0
false
Run Code Online (Sandbox Code Playgroud)

同样,如果向类添加虚函数和析构函数Foo

#include <iostream>

using namespace std;

class Foo {
public:
  virtual void Print() …
Run Code Online (Sandbox Code Playgroud)

c++ initialization c++11

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

如果没有初始化类字段,为什么在c ++中没有编译时错误?

在我的班上我使用的是这样的领域:

private:
bool firstSeqNumReceived;
Run Code Online (Sandbox Code Playgroud)

一切都工作正常一段时间但在一次提交后我发现现在true默认情况下是字段.令人惊讶的是false,默认情况下字段未初始化,而是指定的值取决于实现(有关更多详细信息,请参阅C++类成员的默认值)

现在我想知道为什么编译器不会产生编译时错误,迫使我添加初始化?谁需要"依赖于实现"的默认值,是否有任何用例?为什么不在这种情况下产生编译时错误?

c++

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

c ++ float作为参数传递未正确打印

我是c +的新手.我有一个简单的控制台应用程序,header.h其中包含我的课程

class MyClass
{
public:
    float x, y, z;

    MyClass(float x, float y, float z);
};
Run Code Online (Sandbox Code Playgroud)

我有implement.cpp我所有实现的方法,我有

MyClass::MyClass(float x, float y, float z) {};
Run Code Online (Sandbox Code Playgroud)

然后在main.cpp我尝试简单地打印值

int main()
{
  MyClass One(-3.0f, 0.0f, 4.0f);

  cout <<  "Firsth Object: " << One.x << ", " << One.y << ", " << One.z << endl;
}
Run Code Online (Sandbox Code Playgroud)

但在控制台值中打印如下:

-1.07374e + 08,-1.07374e + 08,-1.07374e + 08

我究竟做错了什么?

c++

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