C++之函数参数中带有class的情况会重复释放类资源、导致段错误发生

我的C++的一个类,要在另一个函数中使用到,原来按照一般的数据类型传递参数,比如:

#include <iostream>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

class CClass{
public:
CClass(){
std::cout<<"String CClass"<<std::endl;
}
~CClass(){
std::cout<<"Ending CClass"<<std::endl;
}
};

CClass CLS;

void func(CClass cls){
return ;
}

int main(int argc,char **argv){
func(CLS);
return 0;
}


结果居然就是:

ayanmw@ayanmw-desktop:~$ g++ classInFunction.cpp 
ayanmw@ayanmw-desktop:~$ ./a.out
String CClass
Ending CClass
Ending CClass


着实 让我郁闷了一下!!!函数内部传递的一个类,居然 在这个函数内部给释放掉了。。。

如果类里面有一些 指针,end的时候有free or delete的操作,那么结果就是: 段错误

这种问题 我不知道如何处理,只能避免 在函数参数中使用类了。

转载请注明出处:http://www.cnblogs.com/ayanmw 多谢

------------------------------------------------------------------------------------------------

一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

原文地址:https://www.cnblogs.com/ayanmw/p/2413695.html