这个题目是面试中很常见的,对考查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