首页 > 编程 > C++ > 正文

C++实现String类实例代码

2020-05-23 13:47:52
字体:
来源:转载
供稿:网友

C++实现String类实例代码

这是一道十分经典的面试题,可以短时间内考查学生对C++的掌握是否全面,答案要包括C++类的多数知识,保证编写的String类可以完成赋值、拷贝、定义变量等功能。

#include<iostream> using namespace std;  class String { public:     String(const char *str=NULL);     String(const String &other);     ~String(void);     String &operator =(const String &other); private:     char *m_data; };  String::String(const char *str) {   cout<<"构造函数被调用了"<<endl;   if(str==NULL)//避免出现野指针,如String b;如果没有这句话,就会出现野          //指针   {     m_data=new char[1];     *m_data=''/0'';   }   else   {    int length=strlen(str);    m_data=new char[length+1];    strcpy(m_data,str);   } } String::~String(void) {   delete m_data;   cout<<"析构函数被调用了"<<endl; }  String::String(const String &other) {  cout<<"赋值构造函被调用了"<<endl;  int length=strlen(other.m_data);  m_data=new char[length+1];  strcpy(m_data,other.m_data); } String &String::operator=(const String &other) {    cout<<"赋值函数被调用了"<<endl;    if(this==&other)//自己拷贝自己就不用拷贝了          return *this;    delete m_data;//删除被赋值对象中指针变量指向的前一个内存空间,避免           //内存泄漏    int length=strlen(other.m_data);//计算长度    m_data=new char[length+1];//申请空间    strcpy(m_data,other.m_data);//拷贝    return *this; } void main() {    String b;//调用构造函数    String a("Hello");//调用构造函数    String c("World");//调用构造函数    String d=a;//调用赋值构造函数,因为是在d对象建立的过程中用a来初始化    d=c;//调用重载后的赋值函数 } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表