美文网首页
【GeekBand】C++笔记(2)

【GeekBand】C++笔记(2)

作者: irishehe | 来源:发表于2016-07-31 11:55 被阅读0次

一、析构函数的主要作用就是:释放资源,避免内存泄漏。

       如果类里面只用到的基本类型,如int char double等,系统的默认析构函数其实什么都没有做

但如果你使用了其他的类如vector,string等,系统的默认析构函数就会调用这些类对象的析构函数。

       平时使用中也一定要注意:

                 对于指针型成员变量(动态分配内存的)要先释放内存。

二、关于String类的例子:

class String

{

public:

    ~ String(void); // 析构函数

    String(const char* str = NULL);//普通构造函数

    String(const String &other);//拷贝构造函数

    String &operate = (const String &other);//赋值操作

private:

    char * m_data;

}

// String 的析构函数

String::~String(void)

{

    delete [] m_data;

}

// String 的普通构造函数

String::String(const char *str)

{

    if(str==NULL)

    {

        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::operate =(const String &other)

{

    // (1) 检查自赋值

    if(this == &other)

    return *this;

    // (2) 释放原有的内存资源

    delete [] m_data;

    // (3)分配新的内存资源,并复制内容

    int length = strlen(other.m_data);

    m_data = new char[length+1];

     strcpy(m_data, other.m_data);

     // (4)返回本对象的引用

     return *this;

}

相关文章

网友评论

      本文标题:【GeekBand】C++笔记(2)

      本文链接:https://www.haomeiwen.com/subject/nygtsttx.html