16,473
社区成员
发帖
与我相关
我的任务
分享
//拷贝构造函数
myClass(myClass &obj)
{
this=obj.local_string;
}
#include<iostream>
using namespace std;
//定义类
class myClass
{
//定义字符串类型
typedef char* string;
//私有
private:
string local_string;
//取常数字符串长度
int Length(const string lpSrc)
{
//计算字符串长度
int nSize=0;
while(lpSrc[nSize]) nSize++;
return(nSize);
}
//公有
public:
//取当前字符串长度(重载)
int Length()
{
return(Length(local_string));
}
//无参构造函数
myClass()
{
//初始化变量
local_string=NULL;
cout<<"无参构造函数"<<endl;
}
//有参构造函数
myClass(const string lpSrc)
{
//计算字符串长度
int nSize=Length(lpSrc);
//分配内存
local_string=new char[(nSize+1)];
//复制数据
for(int i=0;i<nSize;i++)
{
local_string[i]=lpSrc[i];
}
//结束标志
local_string[i]=0;
cout<<"有参构造函数"<<endl;
}
//拷贝构造函数
myClass(myClass &obj)
{
/*
//计算字符串长度
int nSize=Length(obj.local_string);
//分配内存
local_string=new char[(nSize+1)];
//复制数据
for(int i=0;i<nSize;i++)
{
local_string[i]=obj.local_string[i];
}
//结束标志
local_string[i]=0;
*/
this=obj.local_string;
cout<<"拷贝构造函数"<<endl;
}
//析构函数
~myClass()
{
if(NULL!=local_string)
{
delete[] local_string;
}
cout<<"析构函数"<<endl;
}
//类赋值运算
myClass& operator=(const myClass &obj)
{
if(this!=&obj)
{
//计算字符串长度
int nSize=Length(obj.local_string);
//分配内存
local_string=new char[(nSize+1)];
//复制数据
for(int i=0;i<nSize;i++)
{
local_string[i]=obj.local_string[i];
}
//结束标志
local_string[i]=0;
}
cout<<"类赋值运算函数"<<endl;
return *this;
}
//常数赋值运算
myClass& operator=(const string lpSrc)
{
//计算字符串长度
int nSize=Length(lpSrc);
//分配内存
//local_string=(char *)malloc((nSize+1) * sizeof(char));
local_string=new char[(nSize+1)];
//复制数据
for(int i=0;i<nSize;i++)
{
local_string[i]=lpSrc[i];
}
//结束标志
local_string[i]=0;
cout<<"常数赋值运算函数"<<endl;
return *this;
}
//取值运算
operator string() const throw()
{
return local_string;;
}
};
//复制字符串
void copy(string &dest,const string src)
{
//计算字符串长度
int nSize=Length(src);
//分配内存
dest=new char[(nSize+1)];
//复制数据
for(int i=0;i<nSize;i++)
{
dest[i]=src[i];
}
//结束标志
dest[i]=0;
}