能力值:
( LV2,RANK:10 )
|
-
-
2 楼
#include <iostream.h>
#include <string.h>
class A
{
public:
A();
virtual ~A();
static char* p;
static char* GetChar();
};
char * A::p=0;
A::A()
{
if (p==NULL)
{
p=new char[100];
strcpy(p,"TEXT");
}
}
char* A::GetChar()
{
return p;
}
A::~A()
{
}
void main()
{
A a1;
A a2;
cout << a1.GetChar()<<endl;
cout<<a1.GetChar()<<endl;
}
我的测试代码,创建第一个对象时申请内存,我已经实现了,如何在销毁最后一个对象时,释放内存 ,麻烦高手给指点!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
singleton模式
|
能力值:
( LV6,RANK:80 )
|
-
-
4 楼
析构里delete p 就可以 ,这个类拷贝来说很危险了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
加个引用计数吧
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
怎么实现啊 ,麻烦高手给个 思路 啊
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
加个静态变量作为计数器,构造函数里加,析构函数里减,减到0就释放内存呗
另外:Singleton模式即单例模式,是指一个类只能创建一个实例。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢了 ls啊了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我这边没法单步~比较郁闷阿~不过我现在类中设置static的计数变量,发现连接失败(想想觉得类中设置静态是不太对),然后我就在构造函数中设置,在析构函数中判断,发现提示未定义,也是阿,毕竟是在构造中定义的,只好在类中定义个变量保存加后的值,发现好像也不太行~在思考中
|
|
|