页首Html代码

返回顶部

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的操作,那么结果就是: 段错误

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

posted @ 2012-03-23 15:04  ayanmw  阅读(951)  评论(0编辑  收藏  举报

页脚Html代码