컴공 일기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를 선물하세요.
-
집에서 걸어서 10분거리에 헬스장있어서 거기에서 매일 한시간정도 런닝머신에서 뛰려고 하는데 괜찮음?
-
머리속은 쉬운데 표현하기 귀찮네
-
[단독] 보훈부, 연평해전 용사들 25년 만에 국가유공자 비해당 판정 6
1999년 6월 벌어진 제1연평해전 참전 장병 8명이 국가보훈부로부터 국가유공자...
-
구함
-
우리 학교에 수특만 풀고 3모 84점 받는 애 있는 데 얼마나 천재인거임?
-
작년 8덮 생2 지2 확인할게 있는데 해설지 있는 사람 있나요? ㅠㅠ
-
개빻은 얼굴이 갑툭튀해서 놀랐다:;;;;
-
모 오르비언과의 듀오 중복 시 n분의 1 기회 1번
-
혼영하러옴 4
후
-
대구를 향해 27
-
헬스장 와써요 13
스트레스 마구마구 풀기
-
휴릅 12
-
특히샤넬광고
-
작년 oz실모를 엄선해서 모아놓은 책인가요?
-
작년 수능입니다 여기 형광펜 친 파트 자체부터가 이해가 망가지는데 어떤 개념이...
-
이건 조금 웃김 15
아몬드가 죽으면 다이아몬드 소가 죽으면 다이소 물고기가 죽으면???????
-
밖에서 경찰들이 요구사항이 뭐냐!! 하잖음 그럴 때 요구사항으로 은행을 털게...
-
리트 100~110따리일 게 뻔하니까 ㅎㅎ 장애인전형으로 강제동원령 노리는 거...
-
170에 마르고 잘생긴애 누가 더 부러움?
-
나중에 대선 나갈 때 불이익이 될까요 고민이네요
-
안녕하세요. 인강 커리 우선 작수 수능 수학 6등급 나왔습니다… 작년에 수학을...
-
오늘 약속아 있음을 깨달은 뒤였다 아 시발
-
강기원 0
뉴런(3월까지 완료) 하고 강기원 시즌2+시즌1 vod 병행할 생각입니다 만약...
-
룸메들이 전부 나갔다 11
으흐흐흐흐흐
-
어디가 더 나아요?? 시대 단과 낀다는 전제하에
-
무한리필 허니난이랑 밀크티 무조건 먹어보셈
-
실시간 4
홍대
-
확실히 죽도록 노력해서 성공한 경험이 중요한 거 같음 9
물론 반쪽자리 성공이지만, 9평 국어 3 지구 4에서 수능 11로 올렸던 경험이...
-
헤어질까 2
다음에 다시 만나 오늘도 재밌었어
-
필자가 24살에 현재 전문대 다니고 있는데 올해 2학기만 다니면 졸업이야. 나는...
-
고3현역이 0
매우 피곤함,,,
-
지금 그냥 망하고있는것같아요 제대로 되고있는것도 없는것같고 생각대로 되는것도 없고...
-
미칠거같애..
-
걍 말도없이 밥먹으러감요 ㅋㅋㅋㅋ..
-
원래 매일 하려고 했는데 씻는거까지 했더니 시간 많이 잡아먹네..
-
화학>생명>물리>지구
-
이거 보고 사문 버릴지말지 결정하고싶은데..
-
ㅇㅇ?그래도 과잠은 주문해놔야겠죠?
-
문학이 왤케 어렵지 10
비문학보다 문학 푸는 데 걸리는 시간이 더 기네.. 개에반데 재수 때 문학 스트레스...
-
국민연금 개혁안 보니까 나라가 청년세대 빨아먹기에 진심인듯 3
어차피 정치권은 미래세대에 관심 ㅈ도 없는데 STEM 전공으로 해외취업을 하는게...
-
고딩때는 하루가 ㅈㄴ 짧았는데 지금은 할거 다하고 놀거 다 놀아도 시간이 남음….....
-
3모가 수요일인데 요즘에도 격리기간 있나요? 목아픈거 빼고 멀쩡한데 코로나라니…
-
위치 바꿔놓으면 입결도 뒤집히려나
-
거울보세요 2
-
진지하게 오우 썩인줄 알았는데 강사신가보네
-
4점대 극후인데 뭐 반영 방법을 봐도 잘 모르겠음... 많이 불리할까? 글고...
-
집중 안되고 효율 ㅈ구려도 걍 앉아있는게 맞겠지 답답해 죽겠네. 학습실은 빌런들...
-
1. 현재 전자공학과 희망하는 고3입니다 2. 화2에 있는 단원과 관련지어서...
-
가끔은 2
저격하고싶은사람이 가입할때가 있어 물론 비갤은 안함
-
따뜻하네요 ㅋㅋ
C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐