컴공 일기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를 선물하세요.
-
ㅈ댐.
-
연고비상경vs서성한상경에서 취직하려면 서성한상경이다. 연고대라도 문사철보단 서성한...
-
연치 0
(언미)사탐2 vs 사1과1 님들이라묜 ++ 연대 내신 반영 생기부 말고 내신만 반영 맞나요
-
8등급은 내신에서도 못받아봤는데 얼굴로 받아보네ㅋㅋㅋ
-
다군 예비 1000번대까지 도는 학과들 내일 발표나면 불합격 (예비 : ~~~)...
-
아랍에다가 두부 수출할때 두부 외상해갔다는거 아님?
-
생1 1
생물1 이라하면 틀딱 소리 듣나요? 생물이 더 입에 붙는데
-
학력은? 고졸. 8
직업은? 대통령.
-
설높공 vs 지방의 16
어디 가시나요? 졸업 후 진로까지 생각해보면 닥후인가요?
-
키작녀가좋아요
-
얼굴썰 9
그딴거 없다 그니까 공부나 하고 있지!!!!!!
-
파닭 먹고싶다 10
주말에 먹을까
-
강기본 스킵할까요? 강기분 듣고싶은데
-
아랍두부 설문 16
저는 아랍인지두분지모르겟는데 두부가조아요
-
안았을때 발 뜨는 느낌 들면 ㅈㅈㄴㄴ 귀여움
-
지금 지원 가능한 곳 있나요?
-
미적 3등급이지만 확통 바꿀려고 해보니까 어질어질한데 .. 고2 ptsd도 살짝 오는 거 같로
-
오늘 교재온거 6
피램은 신이야…
-
이유가 멀까요? 이젠 간판이 아닌가요? 학교지원이 다른쪽으로 간건가.. 암 생각없이...
-
뭐가 좋나요?
-
고대 정외 고대 행정 고대 국문 고대 역사교육 진학사 최종컷을 알려주시는 분은......
-
시간이 많이 남네 청소 아주머니 말고 아무도 없어서 눈치 볼 사람도 없고 내일부터 독서나 해야겠다
-
프사바꿈 5
ㅁㅌㅊ
-
야식 땡기는데 0
이거 뇌가 속이는거겠지??
-
보통 공대는 남자가 많고 인문은 여자가 많잖아요 근데 취업시장에선 공대 수요가 더...
-
20대 남자 초중후반 나이별로!
-
근데 원광대랑 일부 의대 빼고 대다수 의대들은 기존 정원으로만 교육하면 문제 없다는...
-
근데 기만 중에서도 12
인스티즈나 더쿠에서 퍼온 것 같은 속이 뻔히 보이는데 아닌 척 하는 음침한 기만글들이 있음
-
이번 수능수학 고1수학이 중요했다는 게 무슨 말인가요? 0
작수 4등급 노베에 올해 재수하는데... 하나같이 고1수학이 점점 중요해질거라고...
-
막 광고봐서 돈 받는 앱테크 있잖슴? 그거를 매크로로 돌리는 거지 ㅋㅋㅋㅋㅋㅋ 당장 해본다
-
생명과학과 될까요? 서울대 설대 생명
-
윈터 진짜 예쁘다 18
어떻게 사람이 조각상
-
댓글이 0개인 글을 지울 때입니다 깔끔하게 사라지는 게 쾌감쩔어요
-
순장 1
이거 네크로필리아랑 엮는 국어지문 만들어보고싶네
-
고기집에서 알바 고용하면서 최저만 띡 주고 주휴를 안 줘? 그만둘때 신고로 주휴 전부 받아내야지
-
일러스트 이쁜 데이터 쪼가리 뽑으려고 지르는 30만원 = 하나도 안 아까움 ㅋㅋㅋㅋㅋㅋ 이게맞냐?
-
근데 사실은 일주일이죠
-
최근 8년동안 깨먹은 폰만 5대째네요.............
-
될까요..? 제발 ㅠ
-
강민철쌤 말고 ㅊㅊ 해주세요 좀 스킬적인 강의? 를 듣고싶어요
-
지난달 이맘때보다 49만원 더 썼고 아까 병원비가 97000원이에요 죽고싶어요
-
리뷰 안하는거 나만그럼??
-
세상엔 이쁜 여자가 많아
-
과고영재고 떨어진 이후로 수학 제대로 해보려는데 확통이 맞음? 기하가 맞음? 4
KMO 중등때 기하 조합 다맞긴했고 미적은 1년만에 다 못할거같고 확통은 쉽긴한데...
-
교대 재학생들이 모여 전국 교육대학교 정시 면접 멘토링을 진행합니다. 저희의 약력을...
-
인스타 하는분들 컴온 10
님들 스토리나 게시물 알림해두는 사람 있나요 연예인 말고 지인중에
-
증원,모집정지 이슈 없다면 둘 중 뭐가 더 낫다고 생각하시나요? 어제 올린 재수...
-
미적 초월함수를 잘하면 수2 3,4차 함수는 자연스럽게 잘 한다고 하는 사람이...
-
지금 심정 2
의사는, 못됐네.
-
[음악 차트] 2024년 일본 연간 차트 결산 TOP30 2
2021년 상반기 결산 韓日 음악 차트 TOP10:...
C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐