【发布时间】:2018-11-04 06:11:12
【问题描述】:
我已经试过了。代码:
#include <iostream>
struct A
{
A() { std::cout << "1"; }
A(const A&) { std::cout << "2"; }
A(A&&) { std::cout << "3"; }
};
struct B
{
B() { std::cout << "4"; }
B(const B& b) : a(b.a) { std::cout << "5"; }
B(B&& b) : a(b.a) { std::cout << "6"; }
A a;
};
int main()
{
B b1;
std::cout << "END OF b1" << std::endl;
B b2 = std::move(b1);
}
输出是:
14END OF b1
26
我只是想知道为什么会这样,为什么 B 的构造函数被称为第二个?我也尝试过使用 class 而不是 struct,这是相同的行为。
【问题讨论】:
标签: c++ class struct constructor initialization