#include <iostream>
#include <cstring>
using namespace std; class CMyString
{
public:
CMyString(char *m_pData=NULL);
CMyString(const CMyString& str);
~CMyString(void); CMyString& operator=(const CMyString& str); void print();
private:
char *m_pData;
}; CMyString::CMyString(char *m_pData)
{
if(m_pData!=NULL)
{
this->m_pData = new char[strlen(m_pData)+1];
strcpy(this->m_pData, m_pData);
}else{
this->m_pData = NULL;
}
} CMyString::CMyString(const CMyString& str)
{
new (this) CMyString(str.m_pData);
//this->m_pData = new char[strlen(str.m_pData)+1];
//strcpy(this->m_pData, str.m_pData);
} CMyString::~CMyString()
{
if(m_pData!=NULL)
{
delete [] m_pData;
m_pData = NULL;
}
} CMyString& CMyString::operator=(const CMyString& str)
{
if(this!=&str)
{
CMyString strTemp(str);
char * pTemp = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = pTemp;
}
return *this;
} void CMyString::print()
{
if(m_pData!=NULL)
cout<<m_pData<<endl;
} int main()
{
CMyString str("I'm xxxx.");
str.print();
CMyString cpy1 = str;
cpy1.print();
CMyString cpy2 = "hello World";
cpy2.print();
CMyString cpy3;
cpy3 = str;
cpy3.print();
CMyString cpy4, cpy5;
cpy4 = cpy5;
cpy4.print();
CMyString cpy6(cpy5);
return 0;
}

Offer_1的更多相关文章

  1. 剑指offer_1.24_Day_4

    构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] ...

  2. 剑指offer_1.19_Day_3

    替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. Javascript_V8 f ...

  3. 剑指offer_1.18_Day_2

    怠惰怠惰,好好练练了要 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 ...

  4. Tagging Physical Resources in a Cloud Computing Environment

    A cloud system may create physical resource tags to store relationships between cloud computing offe ...

随机推荐

  1. C# Best Practices - Handling Strings

    Features Strings Are Immutable. A String Is a Reference Type Value Type Store their data directly Ex ...

  2. Java 使用Dom4j和JFileChooser实现xml文件的自主选择路径导出

    直接来个简单的例子,大家一看便知. Document doc=DocumentHelper.createDocument();//创建document Element rootElement=doc. ...

  3. Arduino 跷跷板(2016-01-04)

    前言这是参加社区活动,用赠送的 LilyPad 来做小实验,也体验了一把艺术的LilyPad!本来是申请 nano 的,不知道怎么的就出错啦,申请成 LilyPad 了,这个实验应该用 nano 比较 ...

  4. linux下移动或者复制文件覆盖相同文件夹时,文件夹里面的每个文件都提示是否覆盖

    链接地址:http://blog.chinaunix.net/uid-23683795-id-2391087.html # vi ~/.bashrc   如果你看到如下内容,以下命令都会用别名执行了, ...

  5. JAVA语言的素数判断,随机数,函数调用

    近来刚学JAVA,就从JAVA写起吧,JAVA判别素数,其实方法和C/C++没什么区别,主要就是想谈一下,其中包括的3个点. (1)JAVA语言产生随机数,random函数,定义参数max的作用是给出 ...

  6. BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )

    好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SP ...

  7. UIView 设置阴影(属性说明)

    以下代码实现: 第一个图片的代码 //加阴影--任海丽编辑 _imageView.layer.shadowColor = [UIColor blackColor].CGColor;//shadowCo ...

  8. HTML5 总结-Web存储-7

    HTML 5 Web 存储 在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 ses ...

  9. .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox

    主要针对在VS2012.VS2013的工具箱中,通过“选择项”添加自定义的Dll,如.NET类型时,出现“没有可放置在工具箱的组件”问题的常见解决方案.例如在线编辑工具:FreeTextBox 解决方 ...

  10. XML 反序列化为Model

    什么也不多说,直接贴代码 需要反序列的XML <?xml version='1.0' encoding='utf-8' ?> <GetCitiesListResponse> & ...