C++类构造和成员初始化

ana*_*ret 2 c++

第一个打印显示成员值为false,另外两个打印显示为true.为什么第一个输出与后两个输出不同?

#include <vector>
#include <iostream>

using namespace std;

class MyClass
{
public:
  bool value;
  bool stuff;
};

class Container
{
public:
  vector<MyClass> my_classes;
  Container()
  {
    MyClass c;
    cout << c.value << endl;
    my_classes.push_back(c);
  }
};

int main (int argc , char* argv[] )
{
  MyClass mc;
  cout << mc.value << endl;
  Container con;
  cout << con.my_classes[0].value << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 8

这两个成员是原始(非类)对象,因此未初始化.这意味着它们的值在运行时将是任意的.您必须在构造函数中初始化它们:

class MyClass {
public:
  bool value;
  bool stuff;
  MyClass(): value(false), stuff(false) { }
};
Run Code Online (Sandbox Code Playgroud)

  • @Shiroko:你的意思是_un_initialized? (2认同)