`
rsljdkt
  • 浏览: 451830 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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编程指南

    第7章 内存管理 44 7.1内存分配方式 44 ...9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77

    高质量C C编程指南

    9.6 示例:类STRING的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10章 类的继承与组合 10.1 继承 10.2 组合 第11章 其它编程经验 ...

    高质量编程C++、C

    9.6 示例:类String的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10章 类的继承与组合 10.1 继承 10.2 组合 第11章 其它编程...

    高质量C++_C编程指南

    9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10 章 类的继承与组合 10.1 继承 10.2 组合 第11 章 其它编程经验...

    新手必看编程法则C++

    9.6 示例:类String的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10章类的继承与组合 10.1 继承 10.2 组合 第11章其它编程经验 11.1...

    高质量C++编程指南.PDF

    9.6 示例:类String的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10章 类的继承与组合 10.1 继承 10.2 组合 第11章 其它编程经验 ...

    高质量C、C++编程指南

    9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10 章 类的继承与组合 10.1 继承 10.2 组合 第11 章 其它编程经验...

    高质量C++、C编程指南.doc )

    9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    高质量C++C编程指南(非扫描高清版)(林锐博士)

    9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数. 9.8 如何在派生类中实现类的基本函数. 9.9 一些心得体会. 第10 章 类的继承与组合. 高质量C++/C 编程指南,v 1.0 ...

    高级c语言程序编程思想

    9.6 示例:类String的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    高质量C/C++编程指南(PDF)

    9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数. 9.8 如何在派生类中实现类的基本函数. 9.9 一些心得体会. 第10 章 类的继承与组合. 高质量C++/C 编程指南,v 1.0 2001 ...

    高质量C++编程指南

    9.6 示例:类String的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    《高质量C++_C编程指南》

    9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    高质量C++编程指南(林锐).doc

    9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    高质量C++编程指南(林锐著,高清PDF版)

    9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 ...

    高质量C++C编程指南

    9.6 示例:类String的拷贝构造函数与赋值函数 * 9.7 偷懒的办法处理拷贝构造函数与赋值函数 * 9.8 如何在派生类中实现类的基本函数 * 9.9 一些心得体会 * 第10章 类的继承与组合 * 10.1 继承 * 10.2 组合 * 第11章 ...

Global site tag (gtag.js) - Google Analytics