您的位置:首页 > 其它

简单模仿string类的设计实现.

2010-11-04 16:52 381 查看
#include<iostream>
#include<stdio.h>
using namespace std;

class String
{
public:
	char* get(){return m_data;}
	String(const char *str=NULL);
	String(const String& other);
	~String();
	String& operator=(const String& other);
private:
	char *m_data;
};

String::String(const char* str)
{
	cout<<"构造函数被调用了"<<endl;
	if(str==NULL)
	{
		m_data=new char[1];
		*m_data='/0';
	}
	else
	{
		int length=strlen(str);
		m_data=new char[length+1];
		strcpy(m_data,str);
	}
}
String::~String()
{
	delete m_data;
	cout<<"析构函数被调用了"<<endl;
}
String::String(const String& other)
{
	cout<<"复制构造函数被调用了"<<endl;
	int length=strlen(other.m_data);
	m_data=new char[length+1];
	strcpy(m_data,other.m_data);
	
}
String& String::operator=(const String& other)
{
	cout<<"赋值函数被调用了"<<endl;
	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 main()
{
	String b;
	cout<<b.get()<<endl;
	String a("Hello");
	cout<<a.get()<<endl;
	String c("World");
	cout<<c.get()<<endl;
	String d=a;
	cout<<d.get()<<endl;
	d=c;
	cout<<d.get()<<endl;
}


也算个经典问题吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: