컴공 일기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
보통 몇분안에 풀어야 되나요?
-
21수능 나형 3컷이였다가 다시 준비중입니다.. 진지하게 통합 3만 나와도 바랄게...
-
가상의 여친 AI기술을 적극 활용합시다
-
김범준 스블 29,30 등비급수추론 케이스분류 문제들 수강전에 문제푸는데 1시간...
-
무슨 자욱일까....
-
공부도 잘하고 키크고 운동하고 돈잘벌고 잘생긴 남자 13
차은우.
-
벌크업을 벅벅 크하하 근데 턱살이랑 뱃살만 붙음 아
-
턱걸이 한개도 못했는데 3개함
-
써니같은여친기원 7
-
개념 진도가 너무 안 나가는데 기출 하지 말고 진도 빼는 게 나을까여 아니면 시간...
-
왜 26수능 내기에 들어가졌냐
-
과학고 나와서 한의대 가는 사람들은 진짜 뭐하는 사람들이지ㅋㅋㅋㅋ
-
ㅈ됏네
-
나랑오르비CC할사람 14
남자도 가능
-
진짜 ㅈㄴ힘들었다 ㅠㅠ
-
달아
-
딸깍
-
잠수 타놓고 6년만에 연락 오는 mi친련도 있음 ㅎㅎ
-
그냥 운전하면 짜증만 존나게 나고 걍 남이 태워주는 차가 젤 맛있음 ㅋㅋ
-
막상 썰매장 가면 금방 질리겠지만 가고싶네
-
화학1 0
화학1에서 경제로 넘어가는게 유의미할까요? 화1 표본이 아무리봐도 답이없어서..
-
짧은 진료썰 7
나이보니까 대학생이네요? .. 아 네 그래서 어디가 아프시다고요?
-
ㅎㅇ 9
-
나를데리고살아 14
잼애해줄게
-
존예여르비만
-
물리학 지구과학사회문화
-
현역때 수능끝나고 최저시급으로 일해서 두달만에 370만 벌었엇는데… 그당시엔 최저가...
-
91년 7월: 7억원 참고로 저 당시 압구정 현대, 한양 50평대가 6억쯤이였음...
-
또 연애메타네 0
-
MT갔을때가 꿀잼임
-
예전에 내신할 때 언매랑 탐구 같은 거 양치기 할 때 요긴하게 썼는디 여기도 쓰는 사람 있나
-
원래 화작 독서 문학 순서로 풀어요문학은 비교적 시간이 부족할때 슥슥슥 읽고...
-
과씨씨는 3
헤어진 케이스들 보면 한명은 휴학하거나 자퇴하는거보고 무서워짐..
-
롤~재밌어~
-
[속보] 한동훈 “청년세대 독박 안 된다…연금개혁안 거부해야” 3
연합뉴스 자료사진 한동훈 전 국민의힘 대표가 정부를 향해 여야 합의로 국회에서...
-
커뮤에서 과cc나 연애얘기하는게 싫은 이유(팩트) 12
내가 못하는게 확정이니까
-
젭알
-
3덮 수학 72 1
3등급인가요 ㄷㄷ ㅠㅠㅠㅠ
-
왜 자꾸 뜨는데
-
노후대비 누가 해주면 안됨?
-
복학하니 아는사람도 없고 학교 씹노잼인데 보통 이렇게 솔플하다 졸업하는?
-
수학황 도전ㄱㄱ 5
요고 풀이 좀 해주세요
-
ㅇㅂㄱ 3
12시간잔듯
-
지방약 무휴반인데 거의 여름에 공부 시작할수 있을듯 지역인재도 안되고 과탐 표본은...
-
요거트 아이스 정식?
486..