✨컴공주✨ [1052682] · MS 2021 · 쪽지

2024-12-22 15:32:14
조회수 377

컴공 일기256

게시글 주소: https://ip1ff8si.orbi.kr/00070757393

STL의 string을 흉내내고 있습니다.

되돌아 온 객체 지향의 향기… 익숙하고도 준엄하군요.


사실 결함이 있다면 선언 / 정의를 분리시켜야 하는데, 아이패드에선 그걸 지원하지 않아서

한 헤더 파일에 선언과 정의를 모두 적고 있습니다… 씁슬하네요.


#pragma once

#include <iostream>

using namespace std;

class CMystring

{

    public:

        CMystring();

        ~CMystring();

        //멤버 변수에 포인터가 있으므로 Deep Copy를 반드시 지원해야 한다.

        CMystring(const CMystring&);

        const char* getData() const; 

        void setData(const char*);

        const size_t getLength() const;

        void operator=(const CMystring& rhs);

    

    

    private:

        char*m_pszData = nullptr;    

        size_t length = 0;

};

CMystring::CMystring()

{

    cout << "CMystring()" << endl;

}

//Deep Copy

CMystring::CMystring(const CMystring& rhs)

{

    this->setData(rhs.m_pszData);

}

CMystring::~CMystring()

{

    cout << "~CMystring()" << endl;

    delete[] m_pszData;

}

void operator=(const CMystring& rhs)

{

    this->setData(rhs.m_pszData);

}

const char* CMystring::getData() const

{

    return m_pszData; 

}

void CMystring::setData(const char* pParam)

{

    //setData()가 여러번 호출될 경우, m_pszData가 null이 아닐 수도 있다. 

    if(m_pszData != nullptr)

        delete[] m_pszData;


    size_t length = strlen(pParam);

    m_pszData = new char[length + 1];

    this->length = length;

    strcpy(m_pszData, pParam);

}

const size_t CMystring::getLength() const

{

    return this->length;

}

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.


  • 첫번째 댓글의 주인공이 되어보세요.