String类简单实现(构造、拷贝构造、赋值、析构、输出、比较)

String类的简易实现,用到了构造函数、析构函数、重载运算符、拷贝构造函数、友元函数等知识

参考资料:《高质量C++C编程指南》

运行平台:VS2008

 

#include<iostream>
using namespace std;

class String
{
public:
	String(const char *str = NULL);
	String(const String &other);
	~String(void);
	String & operator=(const String &other);
	bool operator==(const String &str);
	friend ostream & operator<<(ostream& o,const String &str);
private:
	char *m_data;
};

/*
	构造、析构、拷贝构造、赋值运、流输出运算
*/

String::String(const char *str)
{
	if (str == NULL){
		m_data = new char[1];
		*m_data='\0';
	}else{
		int len=strlen(str);
		m_data = new char[len+1];
		strcpy(m_data,str);
	}
}
String::~String(void)
{
	delete [] m_data;
}

String::String(const String &other)
{
	int len = strlen(other.m_data);
	m_data = new char[len+1];
	strcpy(m_data,other.m_data);
}

String & String::operator=(const String &other)
{
	if (this == &other)
		return *this;

	delete []m_data;

	int len = strlen(other.m_data);
	m_data = new char[len+1];
	strcpy(m_data,other.m_data);

	return *this;
}

bool String::operator==(const String &str)
{
	return strcmp(m_data,str.m_data) == 0;
}

ostream & operator<<(ostream &o,const String &str)
{
	o<<str.m_data;
	return o;

int main()
{
	String s = "hello";
	String s2 = s;
	String ss = "hello";
	cout<<"s = "<<s<<endl;
	cout<<"s2 = "<<s2<<endl;
	cout<<boolalpha<<(ss == s)<<endl;
}

 

 运行结果:

s = hello
s2 = hello
true
请按任意键继续. . .
 

你可能感兴趣的:(编程,C++,c,C#)