给一个C++函数传递一个类实例作为参数会引起调用这个类实例的析构函数。

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了给一个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,请注明来意。
标签: