C ++オブジェクト指向プログラミング・ノート3

ポインタのメンバーを持つクラス

1. 3つの特別な機能

コピーコンストラクタ、コピー代入、デストラクタ

2.ctorとデストラクタ

inline String::String(const char* cstr = 0)
{
    if(cstr)
    {
        m_data = new char[strlen(cstr)+1];
        strcpy(m_data, cstr);
    }
    else
    {
        m_data = new char[1];
        *m_data = '\0';
    }
}

inline String::~String()
{
    delete[] m_data;
}

{
    String s1();
    String s2("hello");

    String* p = new String("hello");
    delete p;
}

3.ポインタクラスはコピーコンストラクタとコピー代入を持っている必要があります(カスタム)

ディープと浅いコピーコピー

inline String& String::operator=(const String& str)
{
    if(this == &str)
        return *this;
    
    delete[] m_data;
    m_data = new char[strlen(str.m_data) + 1];
    strcpy(m_data, str.m_data);
    return *this;
}

 

公開された44元の記事 ウォンの賞賛5 ビュー1395

おすすめ

転載: blog.csdn.net/qq_33776188/article/details/104643523