对于一个类Class_A,函数
Class_A function()
{
Class_A a;
...... // some operation
return a;
}
在调用 Class_A b = function() 时
在返回a对象时,对象的构造过程如下:
① Class_A @tmp = Class_A(a); //首先拷贝构造出一个临时变量@tmp
② a::~Class_A() ; //局部变量 a 被析构释放
③Class_A b = @tmp; //调用拷贝构造函数,利用临时变量@tmp构造 b,不过在单步跟踪时,为何未看到这一变量传送过程???被编译器优化????
但是当执行Class_A b = other_class_a时,将执行拷贝构造函数。
④@tmp::~Class_A; //临时变量使命完成,被析构释放
测试环境为VS2017,Windows10。