zoukankan      html  css  js  c++  java
  • 编程练习 尝试写出String类的成员函数实现

    #include <string.h>
    
    //***题目部分************************************
    class String
    {
    public:
        String(const char *str = NULL);
        String(const String &another);
        ~ String();
        String & operator =(const String &);
    private:
        char *m_data; // 用于保存字符串
    };
    //************************************************
    
    String::String(const char *str)
    {
        if(str == NULL)
        {
            m_data = new char[1];// 直接返回了个NULL,低级错误。
            m_data[0] = '\0';
        }
        else
            m_data = new char[strlen(str) + 1];
        strcpy(m_data, str);
    }
    
    String::String(const String &another)
    {
        if(&another == this) // 写成了another == *this
            return;
        else
        {
            m_data = new char[strlen(another.m_data) + 1];
            strcpy(m_data, another.m_data);
        }
    }
    
    String::~String()
    {
        if(m_data != NULL)
            delete[] m_data;
    }
    
    String& String::operator =(const String &rhs)// 格式错误,写成了String::String& operator=......
    {
        if(&rhs == this)
            return *this;
        else
        {
            delete[] m_data; // 忘记了清除原来的数据
            m_data = new char[strlen(rhs.m_data) + 1];
            strcpy(m_data, rhs.m_data);
        }
        return *this;
    } 
  • 相关阅读:
    UISegmentControl
    UISegmentControl,UISwich,UIPageControl
    UIPageControl,UISlider
    UISlider
    触摸事件,响应者链和手势
    NIO Socket
    处理多线程问题的工具类
    Java多线程疑难点
    软中断和硬中断的联系与区别
    进程—内存描述符(mm_struct)
  • 原文地址:https://www.cnblogs.com/awpatp/p/1597023.html
Copyright © 2011-2022 走看看