xieyue-C++程序设计 各章中的 程序代码 适合初学者

源代码在线查看: 例10.4.txt

软件大小: 4499 K
上传用户: fpeisheng
关键词: xieyue-C 程序设计 程序 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				例10.4 定义一个字符串类String,用来存放不定长的字符串,重载运算符“==”,“”,用于两个字符串的等于、小于和大于的比较运算。
				为了使读者便于理解程序,同时也使读者了解建立程序的步骤,下面分几步来介绍编程过程。
				(1) 先建立一个String类: 
				#include 
				using namespace std;
				class String
				{public:
				String( ){p=NULL;}                             //默认构造函数
				String(char *str);                            //构造函数
				void display( );
				private:
				char *p;                                       //字符型指针,用于指向字符串
				};
				String∷String(char *str)                          //定义构造函数
				{p=str;}                                           //使p指向实参字符串
				
				void String∷display( )                             //输出p所指向的字符串
				{cout				
				int main( )
				{String string1(″Hello″),string2(″Book″);
				string1.display( );
				cout				string2.display( );
				return 0;
				}
				
				(2) 有了这个基础后,再增加其他必要的内容。现在增加对运算符重载的部分。为便于编写和调试,先重载一个运算符“>”。程序如下: 
				#include 
				#include 
				using namespace std;
				class String
				{public:
				String( ){p=NULL;}
				String(char *str);
				friend bool operator>(String &string1,String &string2);//声明运算符函数为友元函数
				void display( );
				private:
				char *p;                                       //字符型指针,用于指向字符串
				};
				String∷String(char *str)
				{p=str;}
				
				void String∷display( )                             //输出p所指向的字符串
				{cout				bool operator>(String &string1,String &string2)      //定义运算符重载函数
				{if(strcmp(string1.p,string2.p)>0)
				return true;
				else return false;
				}
				
				int main( )
				{String string1(″Hello″),string2(″Book″);
				cout				}
				
				(3) 扩展到对3个运算符重载。
				在String类体中声明3个成员函数: 
				friend bool operator> (String &string1, String &string2);
				friend bool operator< (String &string1, String &string2);
				friend bool operator==(String &string1, String& string2);
				在类外分别定义3个运算符重载函数: 
				bool operator>(String &string1,String &string2)          //对运算符“>”重载
				{if(strcmp(string1.p,string2.p)>0)
				return true;
				else
				return false;
				}
				
				bool operator				{if(strcmp(string1.p,string2.p)				return true;
				else
				return false;
				}
				
				bool operator==(String &string1,String &string2)       //对运算符“==”重载
				{if(strcmp(string1.p,string2.p)==0)
				return true;
				else
				return false;
				}
				再修改主函数: 
				int main( )
				{String string1(″Hello″),string2(″Book″),string3(″Computer″);
				cout				cout				cout				return 0;
				}
				
				(4) 再进一步修饰完善,使输出结果更直观。下面给出最后的程序。
				#include 
				using namespace std;
				class String
				{public:
				String( ){p=NULL;}
				String(char *str);
				friend bool operator>(String &string1,String &string2);
				friend bool operator				friend bool operator==(String &string1,String &string2);
				void display( );
				private:
				char *p;
				}; 
				String∷String(char *str)
				{p=str;}
				
				void String∷display( )                             //输出p所指向的字符串
				{cout				
				bool operator>(String &string1,String &string2)
				{if(strcmp(string1.p,string2.p)>0)
				return true;
				else
				return false;
				}
				
				bool operator				{if(strcmp(string1.p,string2.p)				return true;
				else
				return false;
				}
				
				bool operator==(String &string1,String &string2)
				{if(strcmp(string1.p,string2.p)==0)
				return true;
				else
				return false;
				}
				
				void compare(String &string1,String &string2)
				{if(operator>(string1,string2)==1)
				{string1.display( );cout				else
				if(operator				{string1.display( );cout				else
				if(operator==(string1,string2)==1)
				{string1.display( );cout				cout				}
				int main( )
				{String string1(″Hello″),string2(″Book″),string3(″Computer″),string4(″Hello″);
				compare(string1,string2);
				compare(string2,string3);
				compare(string1,string4);
				return 0;
				}			

相关资源