C++实现 String 类中的四个函数(构造函数、拷贝构造函数、析构函数、赋值函数)

// 实现 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::~String(void)
{      
	delete [] m_data;    
	//  由于 m_data 是内部数据类型,也可以写成 delete m_data;  
}  

// String 的普通构造函数              
String::String(const char *str)
{      
	if(str==NULL)                               
	{         
		m_data = new char[1];    // 若能加 NULL  判断则更好 
	    *m_data = ‘\0;                          
    }                                               
    else      
    {         
    	int length = strlen(str);                   
        m_data = new char[length+1]; //若能加  NULL  判断则更好              
        strcpy(m_data, str);                     
    }  
}    

//  拷贝构造函数  
String::String(const String &other)
{         
	int length = strlen(other.m_data);      
	m_data = new char[length+1];   // 若能加  NULL  判断则更好        
	strcpy(m_data, other.m_data);         
}  

//  赋值函数  
String & String::operate =(const String &other)
{    
	//(1)  检查自赋值              
	if(this == &other)        
		return *this;  
	//(2)  释放原有的内存资源         
	delete [] m_data; 
	//(3)分配新的内存资源,并复制内容        
	int length = strlen(other.m_data);      
	m_data = new char[length+1];  // 若能加  NULL  判断则更好      
	strcpy(m_data, other.m_data);   
	//(4)返回本对象的引用      
	return *this;  
}   
发布了5 篇原创文章 · 获赞 4 · 访问量 284

猜你喜欢

转载自blog.csdn.net/wffs_yz000/article/details/104070927