1. 程式人生 > >C++面向物件程式設計50道程式設計題(第13題)

C++面向物件程式設計50道程式設計題(第13題)

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();
}

五、心得感受

可以在評論處寫下思考和程式設計此題的感受