C++面向对象程序设计50道编程题(第13题)

版权声明:版权所有,尊重原创。转载请注明出处: https://blog.csdn.net/qq_36426650/article/details/84627038

C++面向对象程序设计50道编程题(第13题)

摘要:C++程序设计实习是为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析问题和解决问题的能力,提高学生运用所学知识解决实际问题的能力。
  本专辑为编程入门者、高校计算机软件专业学习或复习提供C++程序设计题库。
  读者请先独立思考哦,再与参考程序进行比对检查。

一、问题描述

在这里插入图片描述

二、考察内容

  基本面向对象概念,如何创建类、对象,对类私有数据成员和公有成员函数的理解,对重载运算符的理解,简单的字符串处理。

三、难度等级

难度等级:★★★☆☆

四、参考程序

#include<iostream.h>
#include<string.h>
class STR{
	char *s;
public:
	STR(char *p=0);
	STR& operator =(STR &str);
	friend STR& operator+=(STR &str1,STR &str2);
	void print();
	~STR();
};
STR::STR(char *p){
	if(p==0)s=0;
	else{
		s=new char[strlen(p)+1];
		strcpy(s,p);
	}
}
STR& STR::operator =(STR &str){
	if(s)delete[]s;
	s=new char[strlen(str.s)+1];
	strcpy(s,str.s);
	return *this;
}
STR& operator+=(STR &str1,STR &str2){
	char *p=new char[strlen(str1.s)+strlen(str2.s)+1];
	strcpy(p,str1.s);
	strcat(p,str2.s);
	if(str1.s)delete []str1.s;
	str1.s=new char[strlen(p)+1];
	strcpy(str1.s,p);
	if(p)delete []p;
	return str1;
}
void STR::print(){
	cout<<s<<'\n';
}
STR::~STR(){if(s)delete []s;}
void main(){
	STR str1("abcd"),str2("12345"),str3;
	str1.print();
	str2.print();
	str3=str1+=str2;
	str3.print();
}

五、心得感受

可以在评论处写下思考和编程此题的感受

猜你喜欢

转载自blog.csdn.net/qq_36426650/article/details/84627038