首页 > 试题广场 >

假设禁止编译器优化拷贝构造函数,以下代码共调用多少次拷贝构造

[单选题]
假设禁止编译器优化拷贝构造函数,以下代码共调用多少次拷贝构造函数:
Widget f(Widget u){  
   Widget v(u);
   Widget w = v;
   return w;
}
main(){
    Widget x;
    Widget y = f(f(x));
}
  • 9
  • 3
  • 5
  • 7
  1. Widget x; // 无拷贝

  2. 首先计算f(x):

    • 传递x到u:拷贝构造1次(u)

    • 在f内:v(u) -> 拷贝构造1次(v)

    • w = v -> 拷贝构造1次(w)

    • return w -> 拷贝构造1次(临时对象1)
      小计:4次

  3. 然后计算f(临时对象1):

    • 传递临时对象1到u:拷贝构造1次(u)

    • 在f内:v(u) -> 拷贝构造1次(v)

    • w = v -> 拷贝构造1次(w)

    • return w -> 拷贝构造1次(临时对象2)
      小计:4次

  4. 最后,用临时对象2初始化y:拷贝构造1次(y)

总计:4+4+1 = 9次。

发表于 2025-09-25 17:25:45 回复(0)