返回类类型的函数
如果一个函数返回类类型,在编译器无优化的情况下,如果函数返回值不用于赋值或初始化变量,则调用类的拷贝构造函数将返回值赋给一个临时变量;如果返回值用于赋值,则先调用类的拷贝构造函数将返回值赋给一个临时变量,再调用赋值运算符,将临时变量赋值给被赋值的变量;如果返回值用于初始化类变量,则函数返回时,调用类的拷贝构造函数将返回值拷贝给被初始化的变量。以上三种情况参见下面的测试代码和输出:
[00403378] A () called---------------------------[0012FF5C] A () called[0012FF5C] ~A () called---------------------------[0012FF5C] A () called[00403378] A::operator= () called[0012FF5C] ~A () called---------------------------[0012FF60] A () called[0012FF60] ~A () called[00403378] ~A () called