一、构造、析构顺序
C c;
int main()
{
A a;
B b;
static D d;
return 0;
}
//构造顺序:C A B D
//析构顺序:~B ~A ~D ~C
二、拷贝构造次数
以下代码共调用多少次拷贝构造?
Widget f(Widget u) //第一次:传值拷贝构造
{
Widget v(u); //第二次:传值拷贝构造
Widget w = v; //第三次:赋值拷贝构造
return w; //第四次:返回临时变量,拷贝构造
}
void main
{
Widget x;
f(x);
} //共调用4次
Widget f(Widget u)
{
Widget v(u);
Widget w = v;
return w;
}
void main
{
Widget x;
f(f(x));
} //共调用7次