第一个打印显示成员值为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)
这两个成员是原始(非类)对象,因此未初始化.这意味着它们的值在运行时将是任意的.您必须在构造函数中初始化它们:
class MyClass {
public:
bool value;
bool stuff;
MyClass(): value(false), stuff(false) { }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |