컴공 일기259
게시글 주소: https://iu.orbi.kr/00070852115
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를 선물하세요.
-
남들보다 자기가 우월하다는 생각은 안가졋으면 좋겟어요 9
설령 우월하다 해도 그걸 왜 여기다 쓰는지는 더더욱 이해 안가요 우리가 진짜...
-
생각하는 사람들이 너무 많음 문자랑 언어나 같냐고. 그럼 이도가 훈민정음 창제하기...
-
ㅇㅇ..
-
샤프심 추천좀요 2
Ain 0.5빨간색 쓰고있는데 잘뿌러지고 샤프도 종종 망가져서 샤프심 바꿀려하는데...
-
그냥 메타에 올라타서 관심 먹고싶어하는 관심종자임 애초에 본인이 이대남을 비판할때...
-
20명 뽑음 1달내내 6칸 지켜냈는데..
-
시립대vs 이대 6
원래 이과고 메디컬 쪽 편입 생각하고 있긴한데 시립대는 상경계열이고 이대는...
-
좆됐다 1
-
3년에 걸쳐서 서류 만드는 거니깐 아님말고
-
오징어게임2.. 2
님들 재밌었나요..?? 내가 너무 기대를 해서 그런가..흠…좀 똥 싸다 만 기분
-
월 100만원도 아니고 연 100만원이면 본인이 올해 꿈드림(자퇴생 지원)에서 받은...
-
써브웨이 꿀맛조합 추천받음
-
가가라이브 랜덤채팅에서 만난 비식아 제발 돌아와 난 아직도 우리가 했던 씹덕 대화를...
-
음역시귀엽군
-
제 여친 이쁘죠 ㅠㅠㅠㅠㅠㅠ 비추 ㄴㄴㄴㄴㄴㄴㄴㄴㄴ.
-
김승리쌤 문학 0
김승리쌤 올오카 문학에 문학 개념어들도 알려주시나요? 개념이 좀 약해서 유대종쌤...
-
제발..
-
송민호, 상의탈의 강원도 파티 목격담...선택적 대인기피? 3
그룹 위너 송민호가 사회복무요원 부실복무 의혹으로 경찰에 입건됐다. 송민호가...
-
도파민 나올 포인트가 없음요..
-
벗은게 훨씬 나은거 같던데 다들 왜유행인거야 차라리 얇은 은테나 그런건 귀여워보이기라도 하지
-
배고픈 소크라테스 느낌나고
-
이화여대 합격생을 위한 노크선배 꿀팁 [이화여대25][“하, 이제 추합됐는데 뭐하지?] 0
대학커뮤니티 노크에서 선발한 이화여대 선배가 오르비에 있는 예비 이화여대학생,...
-
컴공 제외 공대는 연고 그냥 취향대로 쓰면 됨? 둘이 같다고 보면 되나
-
이렇게 어그로 잘끌리는거 보면 사실 니네들도 정치떡밥 이런거보단 미분을 활용한 배변...
-
하... 고등학교 왜 다녔나 싶고 현타와요
-
닉변 추천 좀 10
해주세요
-
현재 공대 취업 3
스카이 전화기 다니는 친구가 그러는데 지금 공대 츼업 다 박살 났다는데 맞나요?
-
저 S인가요...?
-
10일로 줄여줘 급변하는 세상속에서 이건아닌거같아
-
수시 끝나자마자 수시반수 메타가 돌고 있음ㅇㅇ 저긴 진짜 거의 다 수시 올인인듯
-
오르비 닉변 2
쿨타임 얼마에요?
-
오르비 인스타 팔로우 뱃지 부탁드립니다 유튜브 구독 뱃지도 있잖아요. 인스타도 똑같이 하죠
-
맞팔구해요 1
ㄱㄱ
-
저도 레전드기만 4
응애 그락 구했어요
-
사실 외대 건대 정도면 굉장히 깨끗한 라이벌이라고 생각해요
-
국가경쟁력 향상을 위해서 어쩌구저쩌구 이유로 설컴 100명 전정 100명 물천...
-
https://orbi.kr/00070860551/ 옯밍아웃되는 거 아인교
-
표본분석 해도 0
막판에 다 분석해놓은 과에 사람이 대거 침입 할수도있는건데 그럼 다 무용지물...
-
그거 약간 뭉게서 밥위에 솔솔 뿌려먹으면 은근 괜찮음
-
현재 하는 것) 공군 준비 (내년 중후반 이후쯤 입대?) + 취미생활 2월까지...
-
히히 섹스 8
히히
-
동국vs홍익 1
가나다군 전략 제외하고 선호도 측면에서 말해주셍ᆢㄱ
-
헉
-
취업 안좋은 과 빼고는 아예 못쓸 정도임? 컷 왤케 높냐;;;
-
06 고민 ㅠ 7
우선 저는 정시고 이번 수능 망해서 올해 대학 안갈거같은데 재수를 지원받을수는...
-
자퇴하고 오는길 5
캬캬
C인가요?
C++ 이에용