C++中4个默认函数的调用
构造函数:用于对象产生时给已分配的内存做初始化
拷贝构造:用已存在的对象构造出一个同类型的新的对象
等号运算符重载:用一个已存在的对象给另一个相同类型的已存在对象赋值
析构函数:释放对象所占的资源
在产生新的对象时,系统先开辟出适当的空间会,然后调用构造函数或拷贝构造函数分配资源,对象销毁时要调用析构,然后释放资源。下面一组代码可以清除看出系统调用这几个默认函数的时间
当main程序执行时,先调用两次构造函数产生对象t1和t2,然后进入GetObj函数中,再调用构造产生第三个对象tmp,执行tmp=rhs时调用等号运算符重载,用已存在的对象rhs给tmp赋值。当GetObj函数返回时调用拷贝构造,用tmp再构造出新的临时对象(结果图中的00C3FD64),此时程序将跳出GetObj函数,跳出之前将程序内部形成的局部对象tmp析构掉。然后程序再跳到主函数中,将GetObj函数返回值赋值给t1,这一句中调用等号运算符重载。然后按栈帧回退的方式,将此时存活的对象按照“后产生的先析构”的方式析构掉。