在阅读回答这个 的问题 我有一个疑问,关于默认的建筑物中的矢量。来测试它的我写了下面测试码:

struct Test
{
    int m_n;

    Test(); 

    Test(const Test& t);

    Test& operator=(const Test& t);
};

Test::Test() : m_n(0)
{
}

Test::Test(const Test& t)
{
    m_n = t.m_n;
}

Test& Test::operator =(const Test& t)
{
    m_n = t.m_n;
    return *this;
}


int main(int argc,char *argv[])
{
    std::vector<Test> a(10);
    for(int i = 0; i < a.size(); ++i)
    {
        cout<<a[i].m_n<<"\n";
    }

    return 0;
}

和确保足够的,测试结构的默认构造方法被称为而创建的矢量的对象。但我不能理解的是如何STL初始化对象我所创建的一个向量的基本数据类型(例如矢量的整数由于没默认的构造?即怎么所有的整数在矢量的价值0?它不应该是垃圾?

有帮助吗?

解决方案

它使用整数默认构造函数,它是零初始化它们的等价物。你可以这样做明确的:

int n = int();

将n设置为零。

请注意默认构造仅用于和所需如果矢量被给予的初始大小。如果你说:

vector <X> v;

没有要求,即X具有一个默认的构造。

其他提示

std::vector<Type> a(10);        // T could be userdefined or basic data type

矢量基本上电话 default 为的类型对其它要点: Type()

  • 如果这是基本数据类型,如int, 双人都有那么int(),double(){int()将获得的价值0}
  • 如果用户定义的数据类型,然后 默认的构造就是被称为。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top