컴공 일기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를 선물하세요.
-
평가원 시험지<—이거 종이냄새랑 디자인이 좋아서 가지고 있으면 기분 좋아짐 왠진 모르겠는데
-
노베는 아니라서 기출 위주로(EBS포함) 파이널 같이 갈 커리 찾고 있는데 민철쌤은...
-
삼성은 메모리랑 모바일에서 벌어서 12 1
파운드리에 버리는 중
-
다른 탐구로 돌리긴 늦었고 모르는건 계속 나오고 어떻게 해야할지 모르겠네
-
노래방가고싶다 6 1
제국소녀부르고싶다
-
팬티 다 빨래중인데 어떡하지 4 3
내일 못 씻겠는데
-
다시 많이 나올 것 같은데 어캐생각하시나요?? 뭔가 선택탐구 없어지니까 국어...
-
오늘 점수 높아서 개좋았는데 ㅅㅂ 귀여워서미안해 추가돼서 불러봤는데 ㅈㄴ 좋음
-
확통 김범준 vs 현우진 1 1
반수생인데 공통은 괜찮은데 확통이 오히려 확실하지가 않아요 스블이랑 뉴런중에...
-
피부과 몇달만에 왔는데 4 4
176만원 나옴
-
센츄 확인 1 0
5덮으로 센츄 6모 에피 1차이로 놓침..
-
휴학 사유 너무 투명하게 적었나 11 5
교수도 뭐하는 새낀지 싶을듯
-
연초땡겨 똥매려 0 1
-
오늘개쩌는규동먹으려햇는데 3 0
항생제 먹으니까 부작용으로 배탈 나서 하루는 굶어가는거스루..
-
세지 이개다 지금 가축파트까지 다 들었는데요 복습을 띄엄띄엄 해서 그런가 뭔가...
-
보니까 통과에서 비율 10퍼센트도 안되네.. 지구과학이 대부분인거같고
-
예쁜 선생님이랑 연애하고싶음 2 1
ㄹㅇ
-
국어 강의를 뭘 들어야할까요 0 0
한 2년반정도 공부쉬다가 이제 다시 시작했고요 6모, 작수 풀어봤는데 올해 6모...
-
한양대 수리논술 기하 비중 0 1
작수 미적 백분위 94였고 올해 확통런 해서 확통 개념 다 했는데요 냥대 논술...
-
중딩 때 11 1
마이 안 입고 패딩 입으면 벌점이었는데 이제 와서 생각하니 진짜 왜 그런 거냐
-
ㅇㅂㄱ 4 1
6시기상!
-
작수 22번이 만만치 않은데.. 사람들은 사후적으로만 봄 3 2
실전에서 20분이상 최소 남아야 22번을 풀수가 있음. 문제를 정말 정말 많이 푼게...
-
둘 다 주면 어디가심?
-
강서나 양천에서 미적특강 0 0
하루 동안 무료로 미적특강받으실 분을 구합니다. 28·29·30번 대비 수업으로...
-
수학 실모, n제 추천 0 0
추천 부탁드립니다... 그리고 보통 언제부터 푸시나요? n제도 2회독 하시나요??...
-
물국어도 나쁘지 않을 거 같음 불2보다 물2가 덜까여서
-
더프에서는 문제 난도를 낮춰준듯 보기문제는 “여전히“라는 말이 있어서 답이 너무 명확했고
-
강서나 양천에서 미적특강 0 0
하루정도 무료로 받으실 분 282930 대비로 진행되며 미적 2등급 이내 학생만...
-
물1은 지옥이다 1 1
뭔 만백이 98이고 뭔 1등급이 7.5퍼냐 얼마나 고인지 감도 안옴..(응시자수...
-
좀 쉬운 수학 실모 추천좀 6 0
자존감 높이고 싶다
-
아무래도 운동을 해야하나 1 0
정신과 신체의 건강을 위해
-
나 작수로 센츄가능함 2 1
근데 의대못감
-
요즘에 좋아요 눌러주시는 분들이 10 18
많네 ㅎㅎ
-
대학 다니니까 잘 ㅣ안보임
-
산책하면서 들을 노래 ㅊㅊ 좀 19 3
-
반대로 안 귀엽고 못 생긴 애가 사투리 쓰면 비호감도가 올라가는걸까..?
-
미적 자작 4 0
-
어짜피 수능장가면 초인적인 집중력을 발휘하는듯한 잠못잤다는 불안감 외엔 별영향없는듯
-
운동하다보니 지치네 1 0
버겁고
-
수특 독서 2 0
이거 연계가 적용학습 - 인철+사회+과기+통합 이 부분만 나오는거에요? 아니면 앞에...
-
허들링 5권 복습하고 옴 0 1
그전까지 오르비들어오면 신고하셈
-
제 여친 보고가세요 4 2
헤헤
-
그냥 요즘엔 수학 문제 고민하는 데에 시간 많이 안쓰고 9 1
어느 정도 선에서 내가 할 고민까지 다 했는데도 안 풀린다 싶으면 바로 해설보고...
-
어댑터 13분컷 야르 7 0
하디바인 코돈 안 풀었긴 한데
-
인간은 3 0
외로우면 진짜 죽을 거 같음 나처럼
-
현역인데 수시러라서 내신할때빼고 모의고사 공부해본적이 거의 없습니다 서울대 쓸거라...
-
윤성훈 엠스킬 0 1
이론편은 다 들었고 문제에도 적용 잘 되는데 문제풀이 강의까지 다 들어야할까요?...
-
의대는 모르겠는데 치대는 군장학생 생각보다 좋은듯요 1 0
왜냐하면 의대는 로컬 개원이나 페닥 하는게 거의 무조건 이득이니까 생일 좀 늦은...
-
22개정 과목 소개 9 0
안녕하세요, 생명과학을 가르치는 생명하드워커입니다. 먼저 간단히 제 소개를...
-
그냥 3모로 에피신청할게요^^ 4 1
3모 국어 뽕으로 에피 찍혔는데 국수탐으로 찍고싶어서 존버하다가 7모 멸망해서 걍...

C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐