C++面试之 类string的构造函数拷贝构造函数和析构函数

Posted 欣麒骥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++面试之 类string的构造函数拷贝构造函数和析构函数相关的知识,希望对你有一定的参考价值。

编写类String 的构造函数,析构函数,拷贝构造函数和赋值函数

class String 

public:
    String(const char *str=NULL);//构造函数
    String(const String &other);//拷贝构造函数
    ~String(void);//析构函数
    String& operator=(const String &other);//等号操作符重载
    ShowString();
private:
    char *m_data;//指针
;

String::~String()

  delete[] m_data;//析构函数,释放地址空间

String::String(const char *str)

    if (str==NULL)//当初始化串不存在的时候,为m_data申请
    
       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(const String &other)//拷贝构造函数

    int length = strlen(other.m_data);
    m_data = new char[length+1];
    strcpy(m_data,other.m_data);


String& String::operator=(const String &other)

    if (this==&other)
    
        return *this;
    
    delete []m_data;
    int length = strlen(other.m_data);
    m_data=new char[length+1];
    strlen(m_data,other.m_data);
    return *this;

注意:
1.拷贝构造函数和等号操作符重载函数参数用“&”表示深拷贝。深拷贝和浅拷贝也是一个重要的知识点.

以上是关于C++面试之 类string的构造函数拷贝构造函数和析构函数的主要内容,如果未能解决你的问题,请参考以下文章

校招面试 之 C++第4题 拷贝构造函数被调用的3个时机

类string的拷贝构造函数与赋值函数

C++自己实现一个String类

[ C++ ] C++类与对象之 类中6个默认成员函数

C++基础3 类:构造 拷贝 析构函数,

面试中string类的正确写法