gpt4 book ai didi

c++ - vector emplace_back 困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:10 25 4
gpt4 key购买 nike

<分区>

我很好奇这段代码的输出结果。

#include <vector>
#include <iostream>

struct base
{
static int id;
base() {std::cout << "C" << std::endl; mid = id; id++;}
//base(const base&) {std::cout << "Co" << std::endl;}
//base(base &&) {std::cout << "Mo" << std::endl;}
~base() {std::cout << "D" << mid << std::endl;}
int mid;
};

int base::id = 0;

int main()
{
std::vector<base> v;
v.emplace_back();
std::cout << "First" << std::endl;
v.emplace_back();
std::cout << "Second" << std::endl;
}

g++ 4.7.2 显示输出

C
First
C
D0
Second
D0
D1

我不明白为什么在第二个“C”之后看到“D0”。另外,为什么“D0”在输出中出现两次?

此行为符合 C++11 标准还是与“实现质量”相关?

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