C++面试题--手写String类

这个题目是面试中很常见的,对考查C++基础知识来说非常好。

首先我们应该想到,一个类最基本的构成有构造函数,析构函数。
对于这个题目,字符串类,我们先写出它类的定义

含有指针成员变量的类:我们必须重载他的构造函数,析构函数,以及赋值函数。

class String
{
public :
	String(const char *str = NULL);//重载构造函数
	String(const String &s);//重载拷贝构造函数
	~String();//重载析构函数
	String & operator = (const String & s);// 赋值函数(赋值的重载)
private :
	char *mdata;//用于保存字符串
};

一般来说,纸质版笔试题中,通常你只需要写出上面的四个函数声明就可以满分。
当然,有些笔试题会给你函数声明让你来实现这几个函数。

下面是各个函数的具体实现

String::String(const char*str)//构造函数
{
	if (str ==NULL)//判断是否为空
	{
		mdata = new char[1];
		*mdata = '\0';

	}
	else
	{
		const int length = strlen(str);
		mdata = new char[length + 1];
		strcpy(mdata, str);
	}
}
String::String(const String &s)//拷贝构造函数
{
	int length = strlen(s.mdata);
	if (length == 0)//判断是否为空
	{
		mdata = new  char
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值