构造函数,拷贝构造,析构函数(C++)

设有类定义如下:
#define MAXLENGTH 1000
class CString
{
char m_buff[MAXLENGTH];
public:
CString(); //构造函数1,设置为空字符串
CString(char *src); //构造函数2,在考虑了src的长度是否合法后初始化当
前对象
CString(char ch); //构造函数3,0号元素赋值为ch
int setString(char *src); //设置字符串,在考虑了src的长度是否合法后设置当前
对象
friend ostream& operator<<(ostream& Out, const CString& S); //输出字
符串
};
请编写程序实现如下功能:
 为其中的每个成员函数给出实现代码;
 重载下标运算符[ ],使得可以通过[ ]访问数组的指定元素;
 自行根据需要决定是否需要添加拷贝构造函数和析构函数;
 main 函数要求如下,不允许修改:
void main()
{
CString s1;
cout<<s1;
s1.setString("abc1");
cout<<s1;
CString s2("abc2");
cout<<s2;
CString s3('a');
cout<<s3;
CString s4(s2);
cout<<s4;
}
 

/*=======================================================
*学号:
*作业:E14
*功能:请编写程序实现如下功能:
     (1)为其中的每个成员函数给出实现代码;
     (2)重载下标运算符[ ],使得可以通过[ ]访问数组的指定元素;
     (3)自行根据需要决定是否需要添加拷贝构造函数和析构函数
*作者:
*日期:2016.5.15
*========================================================*/

#include<iostream>
#define MAXLENGTH 1000

using namespace std;

class CString
{
	char m_buff[MAXLENGTH];
public:
	CString()                     //构造函数1,设置为空字符串
	{
		m_buff[0]='\0';
	}
	CString(char *src);            //构造函数2,在考虑了src的长度是否合法后初始化当前对象
	CString(char ch);              //构造函数3,0号元素赋值为ch
	int setString(char *src);      //设置字符串,在考虑了src的长度是否合法后设置当前对象
	friend ostream& operator<<(ostream& Out,const CString& S);//输出字符串
	char operator[](int i)const
	{
		return m_buff[i];
	}
};

CString::CString(char *src)                  //构造函数2,在考虑了src的长度是否合法后初始化当前对象
{
	if(strlen(src)>MAXLENGTH)         //判断长度是否合法
	{
		cout<<"输入字符串的长度不合法!"<<endl;
		exit(0);
	}
	else
	{
		strcpy(m_buff,src);         //初始化当前对象
	}
}

CString::CString(char ch)
{
	m_buff[0]=ch;
	m_buff[1]='\0';
}

int CString::setString(char *src)              //设置字符串,在考虑了src的长度是否合法后设置当前对象
{
	if(strlen(src)>MAXLENGTH)         //判断长度是否合法
	{
		cout<<"输入字符串的长度不合法!"<<endl;
		return -1;
	}
	else
	{
		strcpy(m_buff,src);
		return 1;
	}
}

ostream& operator<<(ostream& Out,const CString& S)         //输出字符串
{
	return Out<<S.m_buff<<endl;
}

void main()         //测试主函数
{
    CString s1;
    cout<<s1;
    s1.setString("abc1");
    cout<<s1;

    CString s2("abc2");
    cout<<s2;

    CString s3('a');
    cout<<s3;

    CString s4(s2);
    cout<<s4;
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/86576589
今日推荐