String类的实现

因为大家对构造函数,拷贝构造函数和赋值运算符的区别可能有点模糊,这儿很详细的给出String类的实现,另一篇博文(拷贝构造函数和赋值运算符的区别)中写了三者的区别详细。

#include
using namespace std;
class String
{
 public:
        String(const char* str=NULL);   //普通构造函数
        Strng(const String &other);     //拷贝构造函数
        String & operator=(const String &other);  //赋值函数
        ~String(void);                  //析构函数
 public:
        char& operator[];
        bool operator==(const String& s1,const String& s2 );
        String & operator+=(const String &str);  //本身相加,返回this
        String & operator+(const String &s1,const String &s2) //两个String相加
        friend ostream& operator<<(ostream&out,String& s);
        friend istream& operator>>(iostream&in,String& s); 
 private:
        char *m_string ;              //保存字符串
 };
String::~String(void)
{
  cout<<"destrcut"<>(istream& in,String& s)
{ 
char p[50]; 
in.getline(p,50); 
s=p; 
return in;
}
int main()
{
String a("hello"); //调用普通构造函数
String b("world"); //调用普通构造函数
String c(a); //调用拷贝构造函数
c=b; //调用赋值函数
return 0;
}

 
  
 
  

这儿实现这些必须的函数:构造函数,复制构造函数,赋值函数,析构函数,以及运算符重载。

鉴于有个童鞋做了指正,对于错误地方做了修改^_^

你可能感兴趣的:(C/C++)