Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
2.46 Кб
Скачать
		// source module: overload.c

		#include <iostream.h>
		#include <string.h>

		class sarray 

		{

     				int num;

     				char *data;

  			public:

				sarray( const char* str ) 			// constructor

				{

					num = strlen(str)+1;

        					data = new char[num];

        					strcpy( data, str );

    				};

     				~sarray() { delete data; };



				char& operator[] (int idx ) 				// destructor

				{

        					if (idx>=0 && idx < num)

           						return data[idx];

        					else 

					{

           						cerr << "Invalid index: " << idx << endl;

           						return data[0];

        					};

     				};



				const char* operator=( const char* str ) 

				{

          				if (strlen(str)) 

					{

             						delete data;

            						num = strlen(str)+1;

             						data = new char[num];

             						strcpy (data, str );

          				}

          				return str;

      				};



     				const sarray& operator=( const sarray& obj ) 
				{

         				if (strlen(obj.data))

					{

             						delete data;

             						num = strlen(obj.data)+1;

             						data = new char[num];

             						strcpy (data, obj.data );

         				}

          				return obj;

      				};

           

         				int operator == ( const char* str ) 

				{

         					return (str && data) ?  strcmp(data,str) : -1; 

				};

   

     				int operator < ( const char* str) 

				{

         					return (strcmp(data,str) < 0) ? 1 : 0;

      				};



      				int operator > ( const char* str )

				{

         					return (strcmp(data,str) > 0) ? 1 : 0;

      				};



      				friend ostream& operator << (ostream& os, sarray& obj) 

				{

          					return os << (obj.data ? obj.data : "Nil") ;

      				};

		};



		int main() 

		{

   			sarray A("Hello"), B("world");

   			cout << "A: " << A << endl;     								// << operator	

   			A = "Bad";                      							// = operator

   			A[0] = 'T';                     								// [] operator

   			cout << "A: " << A << endl;    

   			A = B;                          								// = array& operator

   			cout << "A: " << A[1] << endl;

   			cout << "A < B: " << (A < "Two") << endl;

   			return 0;

		}
Соседние файлы в папке ch2