gpt4 book ai didi

c++ - vector 中元素的默认构造

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:50 26 4
gpt4 key购买 nike

在阅读此 question 的答案时我对 vector 中对象的默认构造有疑问。为了测试它,我编写了以下测试代码:

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;
}

果然,在创建 vector 对象时调用了测试结构默认构造函数。但是我无法理解的是,STL 如何初始化我创建基本数据类型 vector (例如整数 vector )的对象,因为它有默认构造函数?即 vector 中的所有整数如何具有值 0?不应该是垃圾吗?

最佳答案

它使用相当于 int 的默认构造函数,即对它们进行零初始化。你可以明确地做到这一点:

int n = int();

会将 n 设置为零。

请注意,只有在给定 vector 初始大小的情况下,才会使用和需要默认构造。如果你说:

vector <X> v;

不要求 X 具有默认构造函数。

关于c++ - vector 中元素的默认构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com