编写String类的构造函数、析构函数以及赋值函数(C++面试题)
2012-05-29 11:39
344 查看
这是一道C++面试题:用C++编写一个String类,实现其构造函数、析构函数以及赋值函数
剖析:这道面试题考查了一下几个方面的知识:
1、C++成员函数默认参数的使用;
2、const关键字的用法
3、如何重载操作符
4、如何进行自赋值检查
5、如何返回自引用
#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、如何返回自引用
相关文章推荐
- 编写String类的构造函数、析构函数以及赋值函数(C++面试题)
- 编写一个String类,实现其构造函数、析构函数以及赋值函数
- C/C++面试题:编写类String的构造函数、析构函数和赋值函数。
- C/C++面试题:编写类String的构造函数、析构函数和赋值函数。
- 【C/C++】实现一个string类的构造函数、析构函数和赋值函数
- 编写String类的构造函数、析构函数、拷贝构造函数、赋值函数
- 详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 字符串strcpy函数的实现,以及字符串string的实现,编写构造函数,拷贝构造函数,赋值函数,析构函数
- 编写String类的普通构造函数、拷贝构造函数、析构函数、赋值函数
- 编写String类的构造函数,析构函数,赋值函数
- C/C++学习笔记:String类的构造函数、析构函数和赋值函数
- 编写string类的构造函数、拷贝构造函数、析构函数、赋值函数
- 编写类String的构造函数、析构函数和赋值函数
- 编写类String的构造函数、析构函数和赋值函数,已知类String的原型
- 编写类String的构造函数、析构函数和赋值函数
- C++中string类的处理字符串构造函数用法, 以及getline cin.getline()输入的区别
- C++反汇编第一讲,认识构造函数,析构函数,以及成员函数
- 编写类String的构造函数、析构函数和赋值函数
- C++【构造函数与析构函数基础知识以及构造析构顺序】
- 编写类 String 的构造函数、析构函数和赋值函数