字符串的构造函数和析构函数以及赋值函数的重载

字符串的构造函数和析构函数以及赋值函数的重载,是面试中经常考到的问题,意在考察应聘者对于重载以及构造函数、析构函数的理解。


程序如下:

#include<iostream>
#include<string.h>
using namespace std;

class String
{
public:
	String(const char*str = NULL);
	String(const String &other);
	String& operator=(const String &other );

	void print()const
	{
	
		printf("%s",m_Data);
		cout<<"\n";
	}

	~String();



private:
	char *m_Data;


};

String::~String()
{

	delete [] m_Data;
}

String::String(const char*str)
{
	if(NULL == str)
	{
		m_Data = new char[1];
		*m_Data = '\0';
	
	}
	else
	{
	
		int length = strlen(str);

		m_Data = new char[length + 1];
		strcpy(m_Data,str);
	}


}

String::String(const String &other)
{
	int length = strlen(other.m_Data);
		m_Data = new char[length + 1];
		strcpy(m_Data,other.m_Data);




}

String &String::operator =(const String &other)
{

	if(this == &other)
		return *this;

	delete  [] m_Data;
		int length = strlen(other.m_Data);
		m_Data = new char[length + 1];
		strcpy(m_Data,other.m_Data);

		return *this;


}


int main()
{
	String str1("china");
	String str2(str1);
	str2.print();
	cout<<"\n";

	String str3 = str2;
	str3.print();

	

	return 0;
}


程序的执行 结果是:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值