以下代码共调用多少次拷贝构造函数:

时间:2021-08-09 19:26:32

以下代码共调用多少次拷贝构造函数:
Widget f(Widget u)
{  
   Widget v(u);
   Widget w=v;
   return w;
}
main(){
    Widget x;
    Widget y=f(f(x));
}


正确答案: D   你的答案: 空 (错误)

1
3
5
7


答案为 D 。

y=f(f(x)) 有两层 f() ,为了说明过程,把里面的一层标明为 f_1 ,外面一层标明为 f_2 。则 7 次调用分别是:
                              x  ->  f_1 的 u

f_1 的 u  ->  f_1 的 v

f_1 的 v  ->  f_1 的 w

f_1 的 w  ->  f_2 的 u

f_2 的 u  ->  f_2 的 v

f_2 的 v  ->  f_2 的 w

f_2 的 w  ->  y