首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-08-27 
设计和实现string类,设计一个应用实例分成3个部分 主函数 头文件 定义#include iostreamusing namespace

设计和实现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&amp;);
virtual~String ();
String operator=(const String&amp;);
String operator……

热点排行