简单的String类(构造、拷贝构造、赋值构造、析构等)
来源:互联网 发布:绝地求生个人数据 编辑:程序博客网 时间:2024/04/19 13:42
#include<iostream>
using namespace std;
class String{
friend ostream& operator<< (ostream&,String&);
public:
String(const char* str=NULL); //赋值构造兼默认构造函数(char)
String(const String &other); //赋值构造函数(String)
String& operator=(const String&other); //operator=
String operator+(const String &other)const; //operator+
bool operator==(const String&); //operator==
char& operator[](unsigned int); //operator[]
String* operator&(); // 取址运算符
size_t size(){return strlen(m_data);};
~String(void) {delete[] m_data;}
private:
char *m_data;
};
inline String::String(const char* str)
{
if (!str) m_data=0;
else
{
m_data = new char[strlen(str)+1];
strcpy(m_data,str);
}
}
inline String::String(const String& other)
{
if(!other.m_data) m_data=0;
else
{
m_data=new char[strlen(other.m_data)+1];
strcpy(m_data,other.m_data);
}
}
inline String& String::operator=(const String& other)
{
if (this!=&other)
{
delete[] m_data;
if(!other.m_data) m_data=0;
else
{
m_data = new char[strlen(other.m_data)+1];
strcpy(m_data,other.m_data);
}
}
return *this;
}
inline String String::operator+(const String &other)const
{
String newString;
if(!other.m_data)
newString = *this;
else if(!m_data)
newString = other;
else
{
newString.m_data = new char[strlen(m_data)+strlen(other.m_data)+1];
strcpy(newString.m_data,m_data);
strcat(newString.m_data,other.m_data);
}
return newString;
}
inline bool String::operator==(const String &s)
{
if ( strlen(s.m_data) != strlen(m_data) )
return false;
return strcmp(m_data,s.m_data)?false:true;
}
inline char& String::operator[](unsigned int e)
{
if (e>=0&&e<=strlen(m_data))
return m_data[e];
}
ostream& operator<<(ostream& os,String& str)
{
os << str.m_data;
return os;
}
String* operator&(); // 取址运算符
{
return this;
}
const String* operator&() const; // 取址运算符 const
{
return this;
}
- 简单的String类(构造、拷贝构造、赋值构造、析构等)
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- String构造函数 拷贝构造函数 析构函数 赋值构造函数的实现
- string函数的构造函数,析构函数,拷贝构造,赋值构造
- 构造、拷贝(复制)构造、赋值构造以及析构
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- 类String的 构造函数、拷贝构造函数、析构函数、赋值函数实现
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写String类的普通构造函数、拷贝构造函数、析构函数、赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数、赋值函数
- 编写String类的构造函数、析构函数、拷贝构造函数、赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 类String的构造函数、拷贝构造函数、析构函数、赋值函数
- String类的构造函数、析构函数、拷贝构造函数、赋值运算符重载
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- 使用bootstrap创建多选择区
- C#文件操作类库
- 输入一行文字,找出其中的大写字母、小写字母、空格、数字以及其他字符各有多少
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
- js高级正则表达式
- 简单的String类(构造、拷贝构造、赋值构造、析构等)
- Tomcat启动产生错误严重: Error initializing endpoint java.lang.Exception: Socket bind failed: [730048] ??????
- Oracle的伪列
- LLdb篇二 教你使用faceBook的chisel来提高调试效率
- hdu 5082 Love(模拟)
- Android系统架构
- Apache启动报错:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not inclu ded in t
- 数据库初级SQL语句
- xib的简单使用