您的位置:首页 > 职场人生

海涛老师的面试题-作业1-赋值运算符函数

2012-06-25 14:11 330 查看
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数

View Code

// CMyString.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string.h>
#include <stdio.h>

class CMyString
{
private:
char* m_data;
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);

CMyString& operator = (const CMyString& str);

void Print();
};

CMyString::CMyString(char* pData)
{
if(pData==NULL)
{
m_data=new char[1];
m_data[0]='\0';
}
else
{
int length=strlen(pData);
m_data=new char[length+1];
strcpy(m_data,pData);
}
}

CMyString::CMyString(const CMyString& str)
{
int length=strlen(str.m_data);
m_data=new char[length+1];
strcpy(m_data,str.m_data);
}

CMyString::~CMyString()
{
delete []m_data;
}

#if 0
CMyString& CMyString::operator =(const CMyString& str)
{
if(this==&str)
return *this;
delete []m_data;
m_data=NULL;
m_data=new char[strlen(str.m_data)+1];
strcpy(m_data,str.m_data);
return *this;
}
#endif
#if 1
CMyString& CMyString::operator =(const CMyString& str)
{
if(this!=&str)
{
CMyString Tmp(str);
char* pTemp=Tmp.m_data;
Tmp.m_data=m_data;
m_data=pTemp;
}
return *this;
}
#endif

void CMyString::Print()
{
printf("%s\n",m_data);
}

void Test1( )
{
printf("测试正常赋值非空值开始! \n");
char* const_str="helloworld!";
CMyString str(const_str);
str.Print();
printf("测试正常赋值非空值结束! \n");
}

void Test2( )
{
printf("测试赋值给自己开始! \n");
char* const_str="helloworld!";
CMyString str(const_str);
str=str;
printf("const_str =%s\n",const_str);
str.Print();
printf("测试赋值给自己结束! \n");
}

void Test3()
{
printf("测试连等赋值开始! \n");
char* const_str="helloworld!";
CMyString str1(const_str);
CMyString str2,str3;
str3=str2=str1;
printf("const_str =%s\n",const_str);
str1.Print();
str2.Print();
str3.Print();
printf("测试连等赋值结束! \n");

}
int _tmain(int argc, _TCHAR* argv[])
{
Test1();
Test2();
Test3();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: