zoukankan      html  css  js  c++  java
  • 自己实现c++中string 类

    class String
    {
    public:
    	String(const char *str = NULL);// 普通构造函数  
    	String(const String &other);// 拷贝构造函数  
    	~String(void);// 析构函数  
    	String & operator = (const String &other);// 赋值函数  
    private:
    	char *m_data;// 用于保存字符串  
    };
    

      

    //普通构造函数  
    String::String(const char *str)
    {
    	if (str == NULL)
    	{
    		m_data = new char[1];// 得分点:对空字符串自动申请存放结束标志''的,加分点:对m_data加NULL判断  
    		*m_data = '';
    	}
    	else
    	{
    		int length = strlen(str);
    		m_data = new char[length + 1];// 若能加 NULL 判断则更好
    		strcpy(m_data, str);
    	}
    }
    
    
    // String的析构函数  
    String::~String(void)
    {
    	delete[] m_data; // 或delete m_data;  
    }
    
    
    //拷贝构造函数  
    String::String(const String &other)// 得分点:输入参数为const型  
    {		 
    	int length = strlen(other.m_data);
    	m_data = new char[length + 1];// 若能加 NULL 判断则更好  
    	strcpy(m_data, other.m_data);
    }
    
    
    //赋值函数  
    String & String::operator = (const String &other) // 得分点:输入参数为const型  
    {
    	if (this == &other)//得分点:检查自赋值  
    		return *this; 
    	if (m_data)
    	    delete[] m_data;//得分点:释放原有的内存资源  
    	int length = strlen(other.m_data);
    	m_data = new char[length + 1];//加分点:对m_data加NULL判断  
    	strcpy(m_data, other.m_data);
    	return *this;//得分点:返回本对象的引用    
    }
    

      

    高级版参考:https://blog.csdn.net/u010700335/article/details/40979037

  • 相关阅读:
    setTimeout()和setInterval()的区别
    iOS开发小技巧
    iOS应用跳转到App Store评分
    前端小技巧-定位的活学活用之仿淘宝列表
    前端CSS
    用c# 开发html5的尝试,试用bridge.net
    Faster数据库研习,一
    五一劳动节,讲讲NEO智能合约的调试
    NEO GUI 多方签名使用
    NEO智能合约开发(二)再续不可能的任务
  • 原文地址:https://www.cnblogs.com/cthon/p/9147945.html
Copyright © 2011-2022 走看看