脚本宝典收集整理的这篇文章主要介绍了给一个C++函数传递一个类实例作为参数会引起调用这个类实例的析构函数。,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<memory.h>
using namespace std;class te{ public: te(char *chs) { if (chs == NULL) { return ; } m_str = (char *)malloc(strlen(chs) + 1); sprintf(m_str, "%s", chs); }
~te() { printf("n call ~te()"); free(m_str); m_str = NULL; }
void show() { printf("nsting=%s n",m_str); }
private: char *m_str;
};
void func1(te p){ printf("nin func1 start n"); //te t1(p); p.show(); printf("nin func1 end n");}
main(){
te t2("ddddd"); t2.show(); func1(t2); printf("n aaaa n"); t2.show(); printf("n cccc n");}
=======================
运行结果:
./a.out
sting=ddddd
in func1 start
sting=ddddd
in func1 end
call ~te() aaaa
sting=
cccc
*** Error in `./a.out': double free or corruption (fasttop): 0x0000000001bd6010 ***======= Backtrace: =========
以上是脚本宝典为你收集整理的给一个C++函数传递一个类实例作为参数会引起调用这个类实例的析构函数。全部内容,希望文章能够帮你解决给一个C++函数传递一个类实例作为参数会引起调用这个类实例的析构函数。所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。