컴공 일기259
게시글 주소: https://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를 선물하세요.
-
강풍올백 0 0
원래 이마 까고 다녀서 상관없는
-
지금 헤겔이 살아 돌아와도 수능 국어 못 맞히는게 0 0
한국어를 몰라서
-
영어1은도대체어떻게받는거임? 0 0
진짜 ㅈㄴ신기함
-
라식보다 라섹이 좋나요? 3 0
강남 모 병원에서는 미국같은데선 오히려 라식 많이 한다고 라식 추천하는데...
-
여기 한의사샘들 계세요?? 4 0
다름이 아니고 질문 좀 드리고 싶은데 쪽지 가능하신 분 계실까요...?
-
얼공 0 0
-
13년전 새르비 0 0
https://orbi.kr/0002846902/%EC%83%88%EB%B2%BD%E...
-
과외 잡았는데 흠 0 0
대학 다니면서 수능까지 잘 볼 수 있겠지
-
손가락 다쳤오 4 0
호 해죠 호
-
오늘부턴 착하게 지내볼거야 2 1
초인종이 울리면 문 앞에 앉아서 꼬리를 흔들거야
-
현강 너무 비싸서 고민 .. 0 0
고3되는데 윈터스쿨 다니면서 러셀 단과로 신성규 신기해 공통, 미적 둘다 듣고...
-
영어 공부법 이거 어떰? 0 1
션티 커리타고있는데 뭔가 영어 인강은 머리에 박히지가 않는거 같아서 일단...
-
노베재수생 공부량 1 0
제가 07현역인데 9모 66466 완전 노베에서 갑자기 대해이 가고싶어져서 2개월...
-
오늘 성대 조발한다는데 7 0
진짜일까요 구라일까요 수시 때 경희대 조발 2시라고 구라친 사람 때문에 경희대 서버...
-
독서실 갈 돈도 없는 TEAM 방바닥 개추 ㅋㅋㅋㅋ 0 0
일단 나부터 ㅋㅋㅋ 우리 집 뭔가 잘못된거 같긔
-
근데 약대 망했다 이런글봐도 11 1
1도 타격이없는게 애초에 돈욕심도 없고 약사에 관심도 없었고 그냥 엄빠가 약사...
-
강남 ㅍㅅㅌㅅㅅ안과 다녀와서 퍼스널아이 라식? 이거 받고 싶어짐...
-
과외 보통 시간당 얼마받음? 9 2
회화 수업 받을건데 시간당 2.5만원(17달러)이라 과외비랑 한 번 비교해보고 싶었음
-
보통 쎈발점 같은 거 하면 단원 끝날때마다 쎈 풂? 1 0
한 단원 개념 끝낸 후 한 단원 쎈 전체 개념 끝내 후 쎈 보통 뭐임?
-
지잡대 무시하지마세요 ㅡㅡ 0 0
그거 혐오발언 이긔
-
한양대 에리카 셈퍼 0 0
추추추추합으로라도 들어갈 수 있을까요? 1지망인데ㅠㅠㅠ
-
연습)내일연논개떨리면개추ㅋㅋ 0 1
Team04화이팅ㅋㅋ
-
안냐떼요 6 0
-
버스 여행 재밋다 0 0
지금 아니면 인생에서 이걸 언제 해봐
-
의치랑 약한수 입결 차이에 비해 페이 차이가 너무 심하게 남.. 한두문제 더...
-
그리워도 돌이킬 수 없는 순간들은 이제 과거가 되었다. 과거의 그 사람과 지금의 그...
-
행복한~점심시간~~ 0 1
-
일본가서 위스키 개쳐먹고싶다 5 0
하아...
-
겨울방학 기하 예습 0 0
예비고3이고 기하는 절대평가인데 예습하는게 나을까요ㅠㅠ 지금 수학은 미적이랑 모의고사 공부하고있어요
-
삼수하니까 2센치 컸다 4 0
사수하면 더 커짐?
-
시대 재종 0 0
원래는 시대 재종반을 들어가려고 했는데 수학은 확실히 김범준t를 듣고 싶어서요.....
-
정시 한의대생 ㄷㄷ 0 0
한의대 갈걸
-
국민 57.6% "한국 사회 부패하고 불공정"…전년대비 소폭 상승 1 1
국민 과반 이상이 한국 사회가 부패하고 불공정하다고 인식하는 것으로 나타났다....
-
독서는 어떤 느낌인지는 알겠는데 문학은 어떻게 준비해야할지 모르겠어여 ;; 독서처럼...
-
작년 평가원 국어 222 1 0
사설도 대부분 2
-
고3 매월승리 질문이용 ㅠ 2 1
올오카 문학만 듣고있고 독서는 혼자 마닳로 하루 한지문씩 1시간가량 익혀가는...
-
국어만 누가 대리시험 봐줬으면 9 1
국어 바보멍청이임….
-
수능2번봤는데 3 0
매 수능 커하 갱신 ㄹㅈㄷ
-
ㄹㅇ
-
수학을못올렸음 0 0
다른과목공부량다합쳐도수학공부량반의반도안될거같음
-
서울대 2단계 돈냈음 7 1
쳐자다 못낼뻔ㅋㅋ
-
동사 생윤 고민… 1 0
재수라 사문 고정에 둘 중에 뭐할지 고민이요 현역 때 6모 치고 생윤사문 사탐런...
-
공군기지 촬영한 10대 중국인측 "배후 없고 철없는 행동 관용을" 5 0
전투기 수백차례 무단촬영·중국 제조 무전기로 감청 시도는 인정 (수원=연합뉴스)...
-
하이닉스 매수하세여 0 0
매수하세여~
-
아이디 cw2027 대성패스 구매하실 분들 중에 서로 추천할 사람 구합니다....
-
성대 소프트 6 0
올해 추합이 작년대비 반토막이 나면 다행이고 그보다 추합률이 떨어진다는 얘길...
-
얼굴에 감각이 없음 8 0
마취해서
-
조발 없으려나
C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐