读书人

设计跟实现string类设计一个应用实例

发布时间: 2012-08-27 21:21:56 作者: rapoo

设计和实现string类,设计一个应用实例
分成3个部分 主函数 头文件 定义
#include <iostream>
using namespace std;
class String
{
public :
String ();
String(const char*);
String(const String&);
virtual~String ();
String operator=(const String&);
String operator+(const String&);
int length() const;
void print() const;
void setChar(int, char);
friend ostream& operator<<(ostream& o,const String& s);
void getData();

protected:
char *data;
};这是头文件

[解决办法]

C/C++ code
class String { public :     String ();     String(const char*);     String(const String&);     virtual~String ();     String operator=(const String&);     String operator+(const String&);     int length() const;     void print() const;     void setChar(int, char);     friend ostream& operator<<(ostream& o,const String& s);     char* getData(); protected:        char *data; }; String::String() {    data = NULL; }  String::String(const char* str)  {      data = new char[strlen(str)+1];      strcpy(data,str);  }   String::String(const String& obj)   {       data = new char[strlen(obj.data)+1];       strcpy(data,obj.data);   }   int  String::length() const   {       return strlen(data);   }   String::~String()   {       if(data)           delete[] data;   }   void  String::print() const   {       cout<<data;   }   String  String::operator =(const String&obj)   {       if (data!=NULL && strlen(data)<strlen(obj.data))       {           delete[] data;           data = NULL;       }       if(data==NULL)           data = new char[strlen(obj.data)+1];       strcpy(data,obj.data);       return (*this);   }   String String::operator+(const String&obj)   {       char *p = new char[strlen(data)];       strcpy(p,data);        if (data!=NULL &&sizeof(data)<strlen(data)+obj.length())        {            delete[] data;            data = NULL;        }        if(data == NULL)            data = new char[strlen(p)+obj.length()+1];        strcpy(data,p);        strcat(data,obj.data);        return *this;   }   char* String::getData()   {       return data;   }   void String::setChar(int nIndex, char element)   {        if(nIndex<0 || nIndex>length())            return;        data[nIndex] = element;   }   ostream& operator<<(ostream& o,const String& s)   {       if(s.data)        o<<s.data<<endl;       return o;   }   int main()   {       String obj1("ahjiojdshjklfhsjd"),obj2;       cout<<obj1;        obj2 = obj1;        obj2.print();   }
[解决办法]
探讨

C/C++ code

class String
{
public :
String ();
String(const char*);
String(const String&);
virtual~String ();
String operator=(const String&);
String operator……

读书人网 >C++

热点推荐