【问题标题】:What happens to uninitialized class members in c++? [duplicate]c++ 中未初始化的类成员会发生什么? [复制]
【发布时间】:2017-09-01 15:14:30
【问题描述】:

c++ 中未初始化的类成员会发生什么?如果我必须这样做,我应该注意什么?

#include <iostream> 
using namespace std;

class Foo {
    int attr1, attr2;   
public:
    Foo ();

Foo::Foo () {   attr1 = 5; }

Foo myThing(); 

【问题讨论】:

  • attr2 将包含垃圾值
  • 你为什么要这样做?

标签: c++ class data-members


【解决方案1】:

C++ 中未初始化的类成员会发生什么?

它们是默认初始化的,对于像int 这样的基本类型,这意味着它将具有不确定的值。

我应该注意什么?

您应该注意永远不要读取不确定的值。

【讨论】:

  • @Taylor 你应该养成在声明变量时或在构造函数中初始化变量的习惯。
  • @ThomasMatthews 我已经有这个习惯了
  • @Taylor:你需要更多的勤奋。变量attr2 未在您的构造函数中初始化。
【解决方案2】:

它们是默认构造的。

对于嵌套类,这意味着它们必须有一个可以不带参数调用的构造函数。

对于普通的旧数据成员(int 等),这意味着它们只是像任何其他 本地 变量一样保持未初始化状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2012-12-17
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多