mystring operator +(const char *str, const mystring &it) { mystring stro; strcpy(stro.s, str); strcat(stro.s, it.s); printf("stro = %p\n", stro.s); return stro; }
当return stro时,其实返回的是stro的一个副本.这时就会调用拷贝构造函数.副本stro其实是在为外部使用作准备.会后于原始stro销毁.
接着,原来的stro销毁,调用析构函数.,析构函数释放的其实是mystring stro,也就是原始stro的内存
最后,当外部使用完stro的副本时,再调用析构函数,释放stro的副本.其实也就是释放拷贝构造函数生成的stro
副本就是拷贝构造函数所生成的.
时间: 2024-12-28 08:47:50