您的位置:首页 > 编程语言 > C语言/C++

编写String类的构造函数、析构函数以及赋值函数(C++面试题)

2012-05-29 11:39 344 查看
这是一道C++面试题:用C++编写一个String类,实现其构造函数、析构函数以及赋值函数

#ifndef STRING_H
#define STRING_H

#include <string.h>
class String
{
public:
String();
String(const char* pStr=NULL) ;
String(const String & str) ;
char *GetData() const;
int Length() const ;
String &operator =(const String &) ;
virtual ~String();

protected:
private:
char* m_pData ;

};

#endif // STRING_H

#include "String.h"

String::String()
{
m_pData=new char[1] ;
m_pData[0]='\0' ;
}
String::String(const char* pStr)
{
if(pStr==NULL)
{
m_pData=new char[1] ;
m_pData[0]='\0' ;
}else
{
m_pData=new char[strlen(pStr)+1] ;
strcpy(m_pData,pStr) ;
}
}
String::String(const String &str)
{
m_pData=new char[str.Length()+1] ;
strcpy(m_pData,str.GetData()) ;
}
int String::Length() const
{
return strlen(m_pData) ;
}
char *String::GetData() const
{
return m_pData ;
}
String &String::operator=(const String &str)
{
if(this==&str)
{
return *this ;
}
delete[] m_pData ;
m_pData=new char[strlen(str.GetData())+1] ;
strcpy(m_pData,str.GetData()) ;
return *this ;
}
String::~String()
{
delete[] m_pData ;
}



剖析:这道面试题考查了一下几个方面的知识:

1、C++成员函数默认参数的使用;

2、const关键字的用法

3、如何重载操作符

4、如何进行自赋值检查

5、如何返回自引用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐