String实现主要函数
来源:互联网 发布:360跑分软件 编辑:程序博客网 时间:2024/05/29 03:41
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
class CString
{
public:CString(const char *_pStr );
~CString();CString(CString &);
CString &operator= (const CString &);
private:char *m_pStr;
friend ostream & operator<< (ostream & os , const CString & _Str)
{
os << _Str.m_pStr ;
return os;
}
friend istream & operator>>(istream & is , CString & _Str)
{
is >> _Str;
return is;
}
};
CString::CString(const char *_pStr = NULL)
{
if(NULL == _pStr){m_pStr = new char[1];
m_pStr[0] = '/0';
}
else
{
m_pStr = new char[strlen(_pStr)+1];
strcpy(m_pStr , _pStr);
m_pStr[strlen(_pStr)] = '/0';
}
}
CString::~CString()
{
delete [] m_pStr;m_pStr = NULL;
}
CString::CString(CString & _Str)
{
m_pStr = new char[strlen(_Str.m_pStr)+1];
strcpy(m_pStr,_Str.m_pStr);
m_pStr[strlen(_Str.m_pStr)] = '/0';
}
operator要小心自我复制的时候正确性
CString& CString::operator= (const CString & _Str)
{
if(_str == *this)
return *this;
m_pStr = new char[strlen(_Str.m_pStr)+1];
strcpy(m_pStr,_Str.m_pStr);
m_pStr[strlen(_Str.m_pStr)] = '/0';
return *this;
}
int main(int argc ,char **argv)
{
CString myString("123");
cout << "first:" << myString;
CString SecString(myString);
cout << endl << SecString;
CString ThirdStr;
ThirdStr = myString;
cout << endl << ThirdStr;
}
这个面试题有几个需要主义的语法错误
1 类定义大括号后面的分号
2 函数声明时候不能有默认行参
3 友元函数需要在类内部定义并且实现
4 默认构造函数也可能是默认形参的构造函数。 也可能有形参。
5 operator = 返回的是*this
6 注意在operator= 的时候直接用 传进来的形参对象的私有成员,这说明 私有成员的访问权限是针对于类定义
的 跟对象没关系。
- String实现主要函数
- string 类主要函数操作笔记
- string构造函数实现
- string函数实现
- String构造函数实现
- Redis系列-存储篇string主要操作函数小结
- redis练习手册<八>string主要操作函数小结
- Redis系列-存储篇string主要操作函数小结
- fork()函数的主要实现(1)
- fork()函数的主要实现(2)
- 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- 面试题---实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- string.h函数的实现
- c++ string trim函数实现
- string四个函数的实现
- String 类成员函数 实现
- C++ string split函数实现
- 中华人民共和国身份证编码机制及实现
- 数字时钟最简单的一种做法
- 软件项目管理实践之日计划
- Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial
- 关于指针
- String实现主要函数
- 云计算网站收集
- 初试Log4j
- 邀请函
- Eclipse3.6开发Android经常卡的解决办法
- 开通啦
- linux发展的问题在于一种新的盈利模式
- Protel封装库至Allegro的转化---网上找的解决方案,个人未解决,请实现的大侠指点下
- 地址解析协议(ARP)与逆地址解析协议(RARP)