编写一个String类,实现其构造函数、析构函数以及赋值函数
2016-05-16 17:12
483 查看
用C++编写一个String类,实现其构造函数、析构函数以及赋值函数
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();<pre name="code" class="cpp"> ShowString();
protected:private:char* m_pData ;};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 ; //当初始化串不存在的时候,为m_data申请一个空间存放'\0'} <pre name="code" class="cpp">String::ShowString() //由于m_data是私有成员,对象只能通过public成员函数来访问{cout<<this->m_data<<endl;}剖析:这道面试题考查了一下几个方面的知识:1、C++成员函数默认参数的使用2、const关键字的用法3、如何重载操作符4、如何进行自赋值检查5、如何返回自引用
相关文章推荐
- 面试大总结:Java搞定面试中的二叉树题目
- STM8红外捕获解析 使用TIM1 16位高级控制定时器
- NGUI 仿android viewapger+listview效果
- Delegate, Notification,KVO优缺点
- 系统辨识char3_2——最小二乘辨识程序
- Linux下安装ROHC协议库并测试
- android 判断横竖屏的方法
- 变量命名
- java自带的多种xml命名空间,及其作用
- VR一些优秀博客文章
- 动画演示10个有趣但毫无用处的Linux命令
- 数组去重
- android MotionEvent中getX()和getRawX()的区别
- 5.16
- 增加Ueditor 字体
- <OJ_Sicily>Can I Post the letter
- tsung测试http的get和post方法配置
- 四十一 常用内建模块 datetime
- 迭代器的抽象
- JAVA项目JDK版本修改