⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 类与继承.cpp

📁 本人初学C++,这是实验课的联系题目,关于类与继承的例子
💻 CPP
字号:
#include<iostream.h>
class BaseString
{
public:
	char *GetData();
	void Input();
	void Disp();
    BaseString();
	virtual~BaseString();
	unsigned int GetLength()
	{return Length;}
protected:
	char Data[1024];
	unsigned int Length;//表示字符串的长度,包括结束的'\0'
};
BaseString::BaseString()
{
	Length=0;
	cout<<"This is basestring creating."<<endl;
}
BaseString::~BaseString()
{
	cout<<"This is basestring dying."<<endl;
}
void BaseString::Disp()  //在屏幕上输出字符串
{
	if(Length<1)
	{
		cout<<"This is empty string!"<<endl;
	}
	else
	{
		cout<<"Display  the string!"<<Data;
		cout<<endl;
		cout<<"The length of this string is:"<<Length<<endl;
		return;
	}
}
void BaseString::Input()  //从键盘上输入字符串
{
	cout<<"Please input a string of character:";
	char temp;
	cin.unsetf(ios::skipws);  //忽略字符串中的空格
	for(int i=0;i<1024;i++)
	{
		cin>>temp;
		Data[i]=temp;
		if(temp=='\n')  //读入字符,直至行尾
		{
			Data[i]=0;
			Length=i+1;
			break;
		}
	}
	cout<<"\nInput string length is:"<<Length<<endl;
	return;
}
char *BaseString::GetData()
{
	return Data;
}
class CmpString:virtual public BaseString
{  //这里是虚基类,为了在NewString类的继承中没有二义性
public:
	bool Compare(char *psz);
	CmpString();
	virtual~CmpString();
};
CmpString::CmpString()
{
	cout<<"This is compare string creating."<<endl;
}
CmpString::~CmpString()
{
cout<<"This is compare string dying."<<endl;
}
bool CmpString::Compare(char *psz)
{
	int newlength=0;
	char*p=psz;
	do
	{
		p++;
		newlength++;
	}
	while(*p!=(int)Length);
		return false;
	p=psz;
	for(int i=0;i<(int)Length;i++)
	{
		if(Data[i]==*p)
		{
			p++;
		}
		else
		{
			return false;
		}
	}
	return true;
}
class CopyString:virtual public BaseString
{
public:
	void Copy(char*psz);
	CopyString();
	virtual~CopyString();
};
CopyString::CopyString()
{
	cout<<"This is the copystring creating."<<endl;
}
CopyString::~CopyString()
{
	cout<<"This is the copystring dying."<<endl;
}
void CopyString::Copy(char*psz)
{
	char*p=psz;
	int NewStringLength=0;
	while(*p!='0')
	{
		p++;
		NewStringLength++;
	}
	if(NewStringLength<1024)
	{
		p=psz;
		for(int i=0;i<NewStringLength;i++)
		{
			Data[i]=*p;
			p++;
	}
	Data[i]='\0';
	Length=NewStringLength+1;
	}
	else
	{
		return ;
	}
}
class ReString:virtual public BaseString
{
public:
	void Reverse();
	ReString();
	virtual~ReString();
};
ReString::ReString()
{
	cout<<"This is re string creating"<<endl;
}
ReString::~ReString()
{
	cout<<"This is re string dying"<<endl;
}
void ReString::Reverse()
{
if(Length==0)
{
	cout<<"The string is empty,please input a new string."<<endl;
	return;
}
char temp;
for(int i=0;i<(int)Length/2;i++)
{
	temp=Data[i];
	Data[i]=Data[Length-2-i];
	Data[Length-2-i]=temp;
}
}
class NewString:public CmpString,public CopyString,public ReString
{
public:
	NewString();
virtual ~NewString();
};
NewString::NewString()
{
}
NewString::~NewString()
{
}
void main()
{
	NewString s;
	s.Input();
	s.Disp();
	s.Reverse();
	s.Disp();
	s.Copy("longer");
	s.Disp();
	if(s.Compare("longer"))
		cout<<"equal"<<endl;
	else
		cout<<"different"<<endl;
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -