编写String类

翻译 2012年03月26日 20:36:02
class String
{
    public:
        String(const char *src = NULL);//构造函数 
        String(const String &other);//拷贝构造函数
        ~String(void);//析构函数
        String & operator =(const String &other);//赋值函数
        void ShowString();
    private:
            char *m_data; 
};

//String 的构造函数 
String::String(const char *src)
{
    if(src == NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0';
    {
        m_data = new char[1];
        *m_data = '\0';
    }
    else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
    {
        int length = strlen(src);
        m_data = new char[length+1];
        strcpy(m_data,src);
    }    
}
//析构函数 
String::~String()
{
    delete [] m_data;//析构函数释放地址空间 
}
//拷贝构造函数 ,功能与构造函数类似 
String::String(const String &other)
{
    int length = strlen(other.m_data);
    m_data = new char[length + 1];
    strcpy(m_data,other.m_data);
}
//赋值函数 
String& String::operator = (const String &other)
{
    if(this == &other)return *this;//当地址相同时,直接返回
    delete [] m_data;//当地址不同时,删除原来申请的空间,重新开始构造 
    int length = strlen(other.m_data);
    m_data = new char[length + 1];
    strcpy(m_data,other.m_data);
    return *this;
}
void String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问 
{
    cout<<this->m_data<<endl;
}
int main()
{
    String s1;
    char *p = "ABCDEFGH";
    String s2(p);
    s1.ShowString();
    s1 = s2;
    s2.ShowString();
    system("pause");
    return 0;
}

相关文章推荐

C++笔试题 String类的实现

这个在面试或笔试的时候常问到或考到。 已知类String的原型为: class String { public:      String(const char *str = NULL);// 普通...

编写一个自定义的String类

一、简介        C++标准库中包含一个string类,提供了一套封装好的数据以及处理这些数据的函数。为了熟悉这个类的内存管理情况,实现一下自定义的String类,涉及构造函数、复制构造函数、...

编写类String原型

http://shansun123.iteye.com/blog/399933 http://blog.csdn.net/zhuimengzh/article/details/6708882   ...

编写类String 的构造函数、析构函数和赋值函数

编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为: class String { public: String(const char *str = NULL);...

编写类String的构造函数、析构函数和赋值函数

编写类String的构造函数、析构函数和赋值函数,已知类String的原型为: class String {       public:         String(cons...
  • kiaxp27
  • kiaxp27
  • 2011年12月01日 21:46
  • 174

编写 类string的构造函数、析构函数、赋值函数

编写 类string的构造函数、析构函数、赋值函数 #include //#include // iostream 包含了strlen、strcpy? using name...
  • artwalk
  • artwalk
  • 2011年08月29日 20:51
  • 341

编写类String的构造函数、析构函数和赋值函数(2)

编写类String的构造函数、析构函数和赋值函数。重载输出运算符。class String { public: String(const char *str = NULL); // 普...

C/C++面试题:编写类String的构造函数、析构函数和赋值函数。

考点:构造函数、析构函数和赋值函数的编写方法 出现频率:☆☆☆☆☆ 已知类String的原型为:         class String         {         public:...

C++基础之编写String类(拷贝构造函数)

拷贝构造函数的本质:一种函数,特殊的构造函数 拷贝构造函数的写法:和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编写String类
举报原因:
原因补充:

(最多只允许输入30个字)