컴공 일기259
게시글 주소: https://9.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를 선물하세요.
-
목요일에 쳣출근날인데.... 유튜브로 뭐라도 공부해서 갈까요? 떨려요 조언좀요 ㅠ
-
20살을 즐기고싶구나
-
하 컨텐츠팀 들어갈걸;;; 과외만 하려니까 너무 백수같아서 우울해짐 시간도 일주일...
-
이정도면 삼수 할만함? 10
24 수능➡️25 수능 국(언) 낮3➡️백분위 92 수(미) 낮4➡️백분위 87...
-
사탐런 0
평균 3등급정도고 탐구는 4정도입니다 생명 지구를했었다가 이번에 지구, 사문으로...
-
강기분 언매 현정훈 트레드밀 오지훈 매직 기출 오지훈 매직 개념(지구과학2) 김준...
-
수학 과외 수요가 지금처럼 있을까요 과외하고싶어서 수학공부 다시 시작했는데...
-
특히 서고연 분들은 올탭 꼭 하셈 노동강도 0임 그냥
-
관리자 기겁할듯 6
-
특히 나보다 공부못하는 새끼가 헛소리로 답변하는 꼬라지 보고다신 안 씀
-
안녕하세요 여러분! 저는 2025학년도 수능을 치룬 현역 고3입니다. 오늘,...
-
와우 0
맨날 모르는 문제 생기면 인강 강사 해설이나 그런거 다 ㅈ까고 유튜브에 어피셜이라는...
-
전단지 그저 goat이동할필요x,잘구해짐 0티어 김과외 1티어 숨고 ㅂㅅ 당근마켓...
-
꼭붙어야 되는데 ㅠㅠ
-
님들 사설풀때 0
유류분,혈액응고이러면서 평가원 사칭하는글 ㅈㄴ싫지않음?
-
한국인이 있는 곳이 국장이다
-
이거 왜이럼 4
내 2마넌 돌려내
-
이제 막 공부 시작한 현역이고 국어 주간지를 풀까 말까 고민중인데 유대종t 풀커리를...
-
급해요 ㅠㅠ 수학 4에서 5 사이인데 수원수투 김범준쌤 스블 어떤가요? 많이...
-
오르비 댓글 다는 매크로( 파이썬 구동할 수 있으면 가능 ) 8
from selenium import webdriver from...
-
뭐 선택할까 ㅠ 25
1. 언매 미적 생명 생윤 2. 화작 미적 생명 생윤 3. 언매 확통 생명 생윤...
-
자야되는데 1
라칸안되네,
-
입학사정관들이 ㄹㅇ 공부안하는 깡촌고등학교의 전교권학생이 내신 꿀빨았구나 라고...
-
연대 어문계열인데 합격권인 사람들 중에 점공 안하는 사람 많나요? 있다고 해도...
-
맞아보고 싶은 여선생님이 한둘이 아니었지.. 하 그 고운 손으로 빠따를 들고 내...
-
내가 보추다 생각하면 13
보추인 거임 자취하면 으흐흐
-
사실상 공대잖아
-
국어는 잘 질문이 안올라오는 편인가요? 아직 합격증 없어서 기다리는중인데 해볼생각 있네요
-
영화리뷰 채널에서 봤는데 재밌당 여주가 개씨발년인건 알겠음
-
일반론적으로 2
이 말 아는 사람?
-
세종대 추합 1
세종대 이과쪽은 추합많이 도는편인가요??
-
실제 활동자 0
오르비 실제 활동자들이 얼마나 될까요
-
‘부정선거 유포 처벌법안’ 나왔다…“표현자유 침해” 비판도 [지금뉴스] 1
부정선거 의혹을 유포한 사람을 처벌하는 내용의 법안이 발의됐습니다. 정춘생 의원 등...
-
6->1 이런거 많은쌤이 좋은건가요?? 저는 4등급입니다..
-
ㄹㅇ...
-
군청과 봄망초를 마스터하는 그날까지
-
서울대 윤교 14
가군 고대 경영 다군 성대 글경인 395.1? 이셨나 그분 고대로 빠집니다 새별비분...
-
대가리로는 윈트북 사야된다는 걸 아는데 가슴이 시키는데…
-
정시 선택 0
언매 확통 생명 생윤 이과지원 가능?
-
책상에 엎드려 자면서 짝녀랑 섹스하는 상상하는 꿈을 꿨음 문제는 잠꼬대를 ㅈㄴ 크게...
-
점공률 60퍼센트에 등수가 모집인원-2이면 좀 위험함? 3
여기 떨어지면 갈 곳 없음 ㅇㅇ 많이 위험한가여
-
렉스김/ILE/PEAI 생각하는 황소 CMS/엠솔/올림피아드 다원 시리우스
-
이건 닥전임듯
-
아이크림발라볼가요,
-
몸에 맞지 않는 옷을 입은채 태어나 벗는게 불가능하지는 않겠지만 엄두도 안나고 너무...
-
고등학교 때 다녔던 수학 학원 가서 선생님이랑 밥 먹었는데 원서 얘기 나와서 “ 아...
-
형왔다 9
인사해라
-
영어 발표수행인데 선생님들끼리 회의 안됐다고 평가기준 안정해두고 수행봄 ㅋㅋㅋㅋ...
-
틀주의) 7
에잉 요즘 샤인미는 좀 쉬?워졌어 미적은 ㅇㅈ인데 공통 무ㅜ냐
C인가요?
C++ 이에용
이런 내용들은 어디서 배울 수 있는건가요...독학으로 하시는 건가요?
독학, 책이죠 뭐