C++复制构造函数,析构函数有关问题

C++复制构造函数,析构函数问题。
#include<iostream>
using namespace std;
class CMyclass
{public:
CMyclass(){};
CMyclass(CMyclass&c)
{
cout<<"copy constructor"<<endl;
}
~CMyclass(){ cout<<"destructor"<<endl;}
};
void fun(CMyclass obj_)
{
cout<<"fun"<<endl;
}
CMyclass c;
CMyclass Test()
{
cout<<"test"<<endl;
 return c;
}
void main()
{
CMyclass c1;
fun(c1);
Test();
}

                执行结果为  :
copy constructor                  
fun
destructor                     //参数消亡
test
copy constructor 
destructor               //返回值临时对象消亡
destructor            //局部变量消亡
destructor              //全局变量消亡。


 疑惑:         具体一点,是哪个参数,哪个局部变量,哪个全部变量消亡。 为什么析构函数执行那么多次? 我对复制构造函数还有析构函数不太熟。
 求大神帮忙,解答一下!!!谢谢。
------解决方案--------------------
destructor                     //参数消亡---->void fun(CMyclass obj_) 中的obj
test
copy constructor 
destructor               //返回值临时对象消亡--->return c; 中的c的copy,会调用copy constructor生成临时对象
destructor            //局部变量消亡--->c1
destructor              //全局变量消亡。--->全局c