这个程序是怎么运行的

这个程序的最后结果是怎么运行出来的呢
函数参数为类的对象时main函数的第四局是怎么个运行情况呢
为什么最后的结果会调用六次参数 为什么相加结果会是4?

img

我是这么理解的,可以gdb跟踪一下:

  1. 18,19,20行 打印3个构造函数
  2. 21行打印3个构造函数,具体是 a1 = a2.add(a3)
    第4个构造函数: a3作为参数传递
    第5个构造函数: add函数里面 temp的声明
    第6个构造函数: 赋值给a1的时候,系统会临时产生一个中间对象,如果是地址传递就不会有
  3. a2和a3里面的成员值都是2,所以结果是4