#include <iostream>
using namespace std;
class TestClass {
char* m_data;
int m_size;
public:
TestClass(void)
{
m_size = 0;
}
~TestClass(void)
{
if (m_data)
delete[] m_data;
}
void copyData(const char* data, int _size)
{
m_data = new char[_size];
memcpy(m_data, data, _size);
m_size = _size;
}
int getDataSize(void) const
{
return m_size;
}
};
void showSize(TestClass a)
{
cout << "size = " << a.getDataSize() << endl;
}
int main()
{
const char* const szData = "ABC";
TestClass a;
a.copyData(szData,strlen(szData)+1);
showSize(a);
return 0;
}
m_data在构造函数中初始化m_data=NULL
copyData:需要进行m_data的销毁,否者每次调用会造成内存泄露
这个类只是练习用还行,一般的产品中不会用到这种形式,std::string已经有类似的处理
一般遇到指针变量时,好的习惯是将它在声明时就初始化为NULL。