String类的实现
2015-11-08 17:43
393 查看
#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;
}
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;
}
相关文章推荐
- c语言 动态内存分配
- MySQL join
- hdoj 5240 Exam
- HDU 4777 Rabbit Kingdom [离线+树状数组]
- cocos code ide--js 中获取cocostudio中按钮以及函数回调
- iOS开发-基本数据类型,对象
- 最短路径算法1—多源点Floyd
- Unity3D游戏引擎最详尽基础教程
- vim 创建Python脚本时候自动补全解释器和编码方法
- “对象被多次指定;已忽略多余的指定”并伴有"无法解析的外部符号 "xxx",该符号在函数 "xxx"中被引用的错误"
- Linux(Centos6.5)下安装svn服务器,并通过http访问
- Python初始基本数据类型
- iOS开发-继承
- 《C专家编程》笔记三:数组和指针实参所对应的形式参数
- windows安装kivy最少走弯路的方法
- 几种垂直居中的方式及CSS图片替换技术
- hdoj1528【贪心】
- 112 web dns理论
- Android 的进程, 线程和任务
- vc++兼容不了win7的解决办法+c语言输入字符串的一些问题