设计跟实现string类,设计一个应用实例
设计和实现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;
};这是头文件
------解决方案--------------------
分成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(); }
------解决方案--------------------