컴공 일기259
String 처리에 대한 객체 예제를 쭉 작성해보고 있습니다.
보잘 것 없지만 지원할 만한 것은 다 지원되는 듯 합니다… 구현되지 않은 기능들이 아직 많지만요.
이동시맨틱에, 딥 카피에, 각종 사칙 연산…
직관적인 편의성을 제공하는 객체로 변모해가는 중..
#pragma once
#include <iostream>
using namespace std;
class CMystring
{
public:
CMystring();
~CMystring();
//멤버 변수에 포인터가 있으므로 Deep Copy를 반드시 지원해야 한다.
CMystring(const CMystring&);
explicit CMystring(const char* pszData);
CMystring(CMystring&&) noexcept;
const char* getData() const;
void setData(const char*);
const size_t getLength() const;
CMystring& operator=(const CMystring& rhs);
CMystring& operator=(CMystring&& rhs) noexcept;
CMystring operator+(const CMystring& rhs);
size_t append(const char* param);
operator const char*(void) const;
private:
char*m_pszData = nullptr;
size_t length = 0;
};
CMystring::CMystring()
{
cout << "CMystring()" << endl;
}
//Deep Copy
CMystring::CMystring(const CMystring& rhs)
{
setData(rhs.m_pszData);
}
CMystring::CMystring(const char* pszData)
{
cout << "CMystring(const char*)" << endl;
setData(pszData);
}
CMystring::CMystring(CMystring&& rhs)
{
cout << "CMystring(CMystirng&&)" << endl;
delete m_pszData;
m_pszData = rhs.m_pszData; //shallow copy
this->length = rhs.length;
rhs.m_pszData = nullptr; //댕글링 포인터로 만들어준다.
}
CMystring::~CMystring()
{
cout << "~CMystring()" << endl;
delete[] m_pszData;
}
CMystring& CMystring::operator=(const CMystring& rhs)
{
this->setData(rhs.m_pszData);
return *this;
}
CMystring& CMystring::operator=(CMystring&& rhs)
{
cout << "opeartor=(CMystring&&)" << endl;
delete m_pszData;
m_pszData = rhs.m_pszData;
this->length = rhs.length;
rhs.m_pszData = nullptr;
return *this;
}
CMystring::operator const char*(void) const
{
return 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);
}
CMystring CMystring::operator+(const CMystring& rhs)
{
CMystring retVal(*this);
retVal.append(rhs.getData());
return retVal;
}
size_t CMystring::append(const char* param)
{
if(param == nullptr) return -1;
if(m_pszData == nullptr)
{
this->setData(param);
return this->length;
}
size_t lenAppend = strlen(param);
char* result = new char[length + lenAppend + 1];
strncpy(result, m_pszData, length+1);
result[length] = '\0';
strncat(result, param, lenAppend);
delete[] m_pszData;
m_pszData = result;
length += lenAppend;
return this->length;
}
const size_t CMystring::getLength() const
{
return this->length;
}
CMystring operator+(const char* pLeft, const CMystring& rhs)
{
CMystring result(pLeft);
result.append(rhs.getData());
return result;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
저녁 콘푸로스트 1
굿
-
들어오라고요
-
노무사 관세사 법무사 세무사 감정평가사 회계사 변호사 행정고시 입법고시 외무고시...
-
자신의 D를 E하려는 F가 G함
-
가천의 최초합+장학 18
2지망 카드지만 조발해주셔서 너무 행복하네요!!
-
글리젠이 말이 아니네...
-
최저 맞추는 전제하에 상향 적정 하향까지 알려주시면 감사하겠습니다 아 문과이고 사회과학계열 희밍함
-
장점, 단점이 있나요? 트럼프 정권은 걍 중국만 담그려고하는것 같던데 걍 중국만...
-
17명 뽑는과고 예비는 항상 1배수 이상 도는데 예비22등을 받았습니다... 이러면...
-
고집 ㅈ나쎄고 집요한 쌩노베 어디없냐? 추르릅.. 내가 1등급 만들어줄게..❤️
-
방금 질문글 올렸는데 사탐98보다 과탐89가 더 어렵다네여 진짜 존경해요 전...
-
25학번선에서 해결할 가능성 더 높지않음? 4500vs 잠재적 20만 인데...
-
물론 성취 기준 복붙인 건 알지만... 12 원핵 vs 진핵 비교요? (샤가프...
-
학원 안 다니고 있고 혼자 공부 중인데 모평 보려면 출신 고등학교 아니면 모평...
-
수학에서 연산은 잘하는데 응용으로 못 넘어가겠어요.. (기초 예제도 자꾸 틀림...
-
지금 듣는 국어 강사 12
적어주세요
-
금번 원광대학교 의과대학 불인증은 증원평가와 무관한 정기평가의 결과입니다. 불인증...
-
예전에 민주당에서 박근혜 가짜뉴스 퍼트릴때 박근혜가 청화대에서 굿을한다,마약x스를...
-
지수 단독 문제일까 지수 로그 역함수 문제일까
-
이맘때쯤이면 항상 나오는 주제인듯 학점은행제로 둘다 자격충족가능한데 솔직히 바로...
-
난이도 둘이 비슷한가요..?
-
치한약수 서연고 붙어놓고 다 반수할듯한데...이러면 08들이 진짜 지옥일듯
-
모든 감정, 정서 등을 논리로 분석하는겁니다
-
내 역랑이 딸릴 듯
-
과외 5
입학 전에 쌩노베 학생 좀 가르치고 싶다 혼자 공부할 수 있게 만들어주고 싶다...
-
천문학적 액수 퍼주면서 주한미군을 붙잡아야 할까? 29
밸런스 게임. ‘미국에 방위비 분담금 5배 정도 올려주기 VS 주한미군 대폭 감축...
-
행정학과가서 외시준비하는사람은 나밖에없겟지..
-
개정은 원순열이 안 들어가서 따로 공부해야 한다는 거 같던데 분량 많거나 난이도...
-
고3 정시 고민 1
생명과학과 희망하는 고3 학생인데 원래 다 이과 과목이였다가 공부량이 너무 많아져서...
-
부산대 합격생을 위한 노크선배 꿀팁 [부산대 25학번] 0
대학커뮤니티 노크에서 선발한 부산대 선배가 오르비에 있는 예비 부산대학생, 부산대...
-
잘 돌아서 안 하려고 했는데 또 들어오게 되네
-
부탁이 아니라 강요입니다
-
등급컷은 상관없고 만점표점이 궁금한 ChillGuy일 때 저번 칼럼에서 2등급 이하...
-
안녕하세요 오르비by매시브 수학강사 이대은입니다. 벌써 2025년이 되고 이주일이나...
-
한석원 알파텤 다음 기출로 넘어가도 무관??
-
고심리 썼었다면 붙었나요?
-
예비고3들한테 취업걱정 ㅈㄴ받노
-
성대 공학계열 2
최종컷 몇으로 보시나요...? 아직 점공 50퍼도 못 넘었던데 ㅠㅠ
-
아니 진짜 과외 4
어케하죠... 과목은 수학입니다. 가르쳐야 하는 애는 그냥 노베고요. 현재...
-
누가 만든건지 참 ㅋㅋ
-
정시일반 만큼이라도 살려줘라 우리는 거의 정석대로 온거잖아 우리만 빼고 좀 해
-
번아웃 와서 학교도 자퇴하고 2년동안 시간 날리다 이제는 고3돼서 공부 해야하는데...
-
밑줄 친 부분 구하는 방법 알려주세요.. 전개를 이용해서요
-
ㄷㄷ조심해야지
-
그 전에 원서 접수한 애들은 구제해줄텐데 버리고 온 한의대.. 수의대.. 공대.. 아른거린다
-
공군 7월 13
컷 100점? 101점? 얼마일까요
-
양자정보공학 입결 어디까지 박을까
-
가만히 앉아서 피해자 됨 걍 수험생활하고 의대왔는데 왜 불이익을 받아야 하는 건지...
-
적폐전형 0
기균 저소득 썼는데 이건 적폐가 맞는 것 같다.. 돈 많이 벌면 사회에 돌려놔야지
-
삼수 고민 5
평균4등급 따리인데 6월부터 시작하면 인서울 들어가긴 힘들겠다는 생각이 들어서요.....
C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐