能不能帮忙写一下c++类的构造函数,拷贝构造函数,赋值运算符=号的操作符重载,析构函数?求教!
我自己写的确实发现老是出错。。。。。classTest{private:char*data;public://构造函数//拷贝构造函数//赋值运算符=号的操作符重载//析...
我自己写的确实发现老是出错。。。。。
class Test{
private:
char * data;
public:
//构造函数
//拷贝构造函数
//赋值运算符=号的操作符重载
//析构函数
}; 展开
class Test{
private:
char * data;
public:
//构造函数
//拷贝构造函数
//赋值运算符=号的操作符重载
//析构函数
}; 展开
1个回答
展开全部
class Test
{
private:
char * data;
unsigned int len; //记录data 长度
public:
Test(void);
Test(Test &item);
Test::Test(char * item,int n);
void operator =(Test& item);
~Test(void);
};
Test::Test(void)
{
this->data = 0; // 这里一般使用null 代替0
this->len = 0;
}
Test::Test(Test& item) //拷贝
{
unsigned int itemLen = item.len;
char *p,*q;
this->len = item.len;
if( this->len == 0 ) //如果长度为0 初始化数据
{
this->data = 0;
return;
}
this->data = new char[itemLen];
p = this->data;
q = item.data;
while( itemLen-- &&(*p++ = *q++));
return;
}
void Test::operator=(Test& item)
{
unsigned int itemLen = item.len;
char *p,*q;
if( this->len > 0)
{
this->len = 0;
delete[] data;
}
this->len = item.len;
if( this->len == 0 )
{
this->data = 0;
return;
}
this->data = new char[itemLen];
p = this->data;
q = item.data;
while( itemLen-- &&(*p++ = *q++));
return;
}
Test::~Test()
{
if( this->len > 0)
{
delete[] data;
}
}
Test::Test(char * item,int n)
{
unsigned int len = n;
char *p,*q;
this->len = n;
if( this->len == 0 )
{
this->data = 0;
return;
}
this->data = new char[n];
p = this->data;
q = item;
while( len-- &&(*p++ = *q++));
return;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询