컴공 일기261
게시글 주소: https://orbi.kr/00070988182
- 동적 배열을 즉석에서 한번 구현해봤습니다.
이동시맨틱, 대입연산, 복사생성, …, 자료출력 등등 구현을 했습니다만
결정적으로 l-value [] 연산을 지원을 안하고 있습니다.
따라서, 객체가 생성될 때 극한의 효율로 생성이 되게 했고, 자료 출력도 가능하게 했습니다만
사용자 코드 쪽에서 동적 배열 객체의 값들을 초기화해서 사용할 수 있도록 [] 연산에 대한 오버로딩을 해줘야 합니다.
간단하지만 그건 시간이 늦은 관계로 내일… 하겠습니다.
이동시맨틱 연습 겸 짜본 코드지요…
자고로, 여기에서 탬플릿과 상속을 조금 더 추가해 봄 직 합니다.
며칠 간은 계속 손을 볼 예제죠. 아직 미완성입니다.
극한의 추상성을 제공해보려고요.
vector STL 흉내 내보겠다는 건데,
객체지향 프로그래밍 공부할 때 이 자세가 중요하지 않나 생각합니다.
흉내를 우선 낼 줄 알아야, 창조를 할 수 있는 거니까요.
#pragma once
#include <iostream>
using namespace std;
class dynamic_array
{
public:
dynamic_array() = default;
explicit dynamic_array(int n);
dynamic_array(const dynamic_array&);
dynamic_array(dynamic_array&&) noexcept;
int* begin() const;
int* end() const;
const int getSize() const;
void PrintData() const;
int operator[] (const int index) const;
dynamic_array operator+(const dynamic_array&);
dynamic_array& operator=(const dynamic_array&);
dynamic_array& operator=(dynamic_array&&) noexcept;
~dynamic_array();
private:
int* data = nullptr;
int size = 0;
};
dynamic_array::dynamic_array(int n)
{
cout << "dynamic_array(int)" << endl;
data = new int[n];
size = n;
}
dynamic_array::dynamic_array(const dynamic_array& rhs)
{
cout << "dynamic_array(const dynamic_array&)" << endl;
this->size = rhs.getSize();
data = new int[size];
for(int i=0; i<size; i++)
{
data[i] = rhs.data[i];
}
}
dynamic_array::dynamic_array(dynamic_array&& rhs) noexcept
{
cout << "dynamic_array(dynamic_array&&)" << endl;
//의도적인 shallow copy
this->data = rhs.data;
this->size = rhs.getSize();
rhs.data = nullptr;
rhs.size = 0;
}
dynamic_array::~dynamic_array()
{
delete[] data;
}
int* dynamic_array::begin() const
{
return data;
}
int* dynamic_array::end() const
{
return data+size;
}
const int dynamic_array::getSize() const
{
return size;
}
void dynamic_array::PrintData() const
{
for(int i=0; i<this->getSize(); i++)
{
cout << this->data[i] << " ";
}
cout << endl;
}
int dynamic_array::operator[](const int index) const
{
if(index < 0 || index >= this->getSize())
{
cout << "Invalid Index!!" << endl;
exit(-1);
}
return this->data[index];
}
dynamic_array dynamic_array::operator+(const dynamic_array& rhs)
{
dynamic_array retVal(this->getSize() + rhs.getSize());
copy(this->begin(), this->end(), retVal.begin());
copy(rhs.begin(), rhs.end(), retVal.begin() + this->getSize());
return std::move(retVal);
}
dynamic_array& dynamic_array::operator=(const dynamic_array& rhs)
{
cout << "dynamic_array::operator=(dynamic_array&)" << endl;
if(data != nullptr)
delete[] data;
data = new int[rhs.getSize()];
for(int i=0; i<rhs.getSize(); i++)
{
data[i] = rhs[i];
}
size = rhs.getSize();
return *this;
}
dynamic_array& dynamic_array::operator=(dynamic_array&& rhs) noexcept
{
cout << "dynamic_array::operator=(dynamic_array&&)" << endl;
if (this != &rhs) { // 자기 대입 방지
if (data != nullptr) {
delete[] data;
}
data = rhs.data;
size = rhs.size;
rhs.data = nullptr;
rhs.size = 0;
}
return move(*this);
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
햇볕이 강력
-
정치얘기할거면 0
합리적이게만 하면됨 문제는 중간에 화가 안나기가 쉽지 않음 정치 논객들도 토론하면서...
-
처리속도 ㅇㅈ 1
나이 설정을 잘못함
-
와...
-
중2때 수학학원 하나 처음 다닌거면 학군지 제외해도 엄청 늦은거 맞는데
-
아 잡담 태그만 하면 원래 모아보기에 안 보이는구나 1
모밴인 줄ㅋㅋ
-
응원 6시간 ㅋㅋㅋㅋㅋㅋㅋ 아.
-
같이 다니는 애 눈크고 얼굴짧고 볼통통 키작고 하튼 개귀요운데 내친구 남자애중에...
-
호에엥
-
평가원 #~#
-
평일 계획이고 올 독학이라 매일 학교 끝나고 독서실가요. 5시에 학교 끝나고...
-
급함
-
매운토크 좀 해볼까 21
새내기 때 연고대 합응 하러 갈때 룸메가 “고대 잡으러 가자” 라고 해서 잘못들어서...
-
현정훈 러쉬 0
지금 배기범 3순환 거의끝나가는데 시대 현정훈 쌤 강의를 듣고싶어요 고3이고 보니까...
-
아직 잠들면 감기걸릴 것 같은데... 그냥 잠깐 눈감고 쉬기는 딱 좋은듯...
-
솔직히 수학은 현우진, 영어는 이명학이고 국어는 누구 같아요?
-
학교기숙사는 아니고 다른 기숙사인데 김치전 반죽 흥건한 채로 나와서 다 버림
-
진짜 모름, 해본 적 없음, 갈드컵 열리면 팝콘 뜯을 거임
-
너무 덥다 0
여름옷 슬슬 꺼내야할듯
-
방역방역
-
올해 생윤사문 하려고 하는데 인강 개념 커리 누구탈까요?? 작년에 윤성훈으로 사문...
-
케이팝 근데 노래는 좋은거 많더라
-
누가 더 인생 망했는지 내기함
-
펜홀더 복귀 0
섹스
-
월급루팡 0
오르비하면서 돈 벌기
-
젭알
-
전문대간 고2친구가 어른들의 돌림힘에 어질어질하다네요 0
매운맛토크에 순수한 고딩이 정신을못차리는중이던데
-
영장청구를 서부지법에 하더니만 그것때문에 석방됐네 ㅋㅋㅋㄱㅋ 장애인들
-
없나요???
-
[속보] 경찰, 탄핵선고일 '갑호비상' 발령한다…경찰력 100% 동원 1
경찰이 윤석열 대통령에 대한 탄핵 심판 선고일을 대비해 전국적으로 '갑호비상'을...
-
김범준의 현강 커리를 보면 스타팅 블록 -> 더 허들링 -> 러너스 하이(파이널)...
-
나만 도파민중독인가 맨날 형누나들이 매운토크해서 귀틀막하는데 저도 그 토크에...
-
야구보고싶다 15
야구보실분?
-
돈 벌러 가자 8
석촌호수로 데이트 가고 싶은 날씨네
-
마싯는 음료 ㅊㅊ 12
마시면서 개 산책 시킬거임 집앞에 카페 거의 다 있음
-
니게tv 개국 141일차
-
중앙대 첨소공 1
안성캠이던데 입결은 서울이랑 비슷한가요? 경희대 공대처럼 그런가해서 여쭤봅니다..!
-
먹을약을안먹으면먹을약을안먹는것이고먹으면안되는약을먹으면먹으면안되는약을먹은것이고아이고신동...
-
이게 맞나?
-
교수님께서 그렇게 원하신다면 째드리죠
-
enfp였던 과거의나 어떻게 첨보는인간이랑 당일날 약속잡아서 밥먹고다닌거냐 지금은...
-
내용 많나요? 수분감 스텝1 다풀어가는데 슬슬 시작해야되나 고2 모고 풀엇을때...
-
공약) 유니폼 1명 그냥 드립니다 (조건부 댓글 추첨) 8
내일 이후로 2달 안에 오르비 접속해서 댓글 하나라도 달면 한명 골라서 원하는 팀...
-
작수 미적 백분위 87떴는데 기출을 제대로 공부한 적이 없거든요 그래서 이번에 기출...
-
고수탑 70%쯤에 드랍했다가 공통 컨 사려고 다시 신청했는데 QedN이랑 위클리콤...
-
하나 더 먹어버리기 괜찮겠지?
-
날씨가 참 좋네요
-
[속보]尹 지지율 47.4%…야당 텃밭 호남·제주서도 36.4% 6
尹 직무 기각 후 복귀할 경우 우선 ‘대국민 사과와 국민통합 제시’ 30.6%...
486..