컴공 일기261
게시글 주소: https://d.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를 선물하세요.
-
사람많은곳에 있으면 힘 빠지는데 아... 지하철에선 소리지르는사람들때문에 정신나갈뻔....
-
오르비q 치킨주세요! 현기증나요!
-
수시 숭실대 교과전형 써놨는데 납치 각인데..하 납치 피하는법좀..있으면 입학처에...
-
저 갑저기 불안한데ㅠㅠㅠ omr 번호부분에 컴싸조금번진거안돼요? 6
하ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ어떡해요ㅠㅜㅜㅜㅠㅠㅠ
-
글들을 보니까 성균관대 추합때 정시를 반영해서 뽑는다는 말이 있는데 작년에...
-
수능직전쯤에한거 발표안한건 그렇다치고 161718차 발표한거 안와서 쪽지보내도...
-
수능성적 오바 0
문과법정사문65 80 81 36 39 어디가야되나요ㅠ
-
생2 PCR질문 2
PCR할 때 넣어주는게 dNTP잖아요 그건 DNA합성재료이므로 DNA합성하고 나면...
-
2016 포카칩 B형 해설 보충 설명 (21,26번) 3
질문이 여러군데 들어오길래 솔로깡님 해설에 쬐금 보충해서 올려요 21번 a와...
-
수능날 한국사 시험으로 잉여할뻔했던 하루를 보람차게 보내시는 건 어떤가요? 11월...
-
1.수능 시험볼때 제2외국어 택했는데요 안보고 나오고 싶은데 포기각서 그거 어떻게...
-
2016학년도 난만한+포카칩 오프라인 B형 일부 문항 해설 20
현장 응시자였습니다!! 두 출제자분의 배려를 받고 감히 지면해설을 올려봅니다~제...
-
21,30번 문항만 해설하였습니다 혹시 그 이외의 문항에 대한 해설 요청이 많이...
-
[생강] 생명과학1- 제2회 생강직전 모의평가 피드백 및 해설지 + 마무리글 86
-----------------------------------------------...
-
너무 늦게 알아서 두개 응시했는데 .. 하나는 공동 6등으로 50%정도 하나는...
-
[Dr.J 화학1 직전 모의고사 문제지&정답지&해설지 배포] 49
문제 푸시느라 정말 고생 많으셨습니다. 저도 작년까지만해도 수능 직전에 여러 온라인...
-
Dr.J 화학1 직전 모의고사 최종 안내 (오늘 저녁 9시!) 6
1. 일시 : 2015년 11월 1일 PM 9:00 ~ 9:352. 시행 장소 -...
-
[FeedBack] ReadMe.txt 물리 1 직전 모의고사 69
2016학년도 대학수학능력시험 ReadMe.txt 물리 1 직전 모의고사 / 피드백...
-
[생강] 생명과학1- 생강 직전모의평가 2회 마지막 시행안내 2
안녕하세요 생강입니다. 저의 올해 마지막 모의고사네요..시험은 잠시뒤인 11월 1일...
-
오늘 오후 8시, 2016 대학수학능력시험 ReadMe.txt 물리 1 직전...
-
바로 오늘 Dr.J 화학1 직전 모의고사가 시행됩니다. 1
1. 일시 : 2015년 11월 1일 PM 9:00 ~ 9:352. 시행 장소 -...
-
[생강] 생명과학1- 생강 직전모의평가 2회 시행안내 오늘 오후 5
안녕하세요 생강입니다.시험은 11월 1일 일요일 오후 9시 40분에 오르비큐...
-
2016 수능직전 포카칩 모의평가 문제지, 등급컷, 해설지 8
안녕하세요. 2016 수능직전 포카칩 모의평가를 출제한 Romanum입니다....
-
해당 모의고사는 2015학년도 이후 평가원 시험에 맞추어 어렵지 않은 난이도로...
-
28 30 어떻게 풀 수있을까요..덜덜 ㅠㅠㅠ
-
다봤어요 졌네요 으ㅏ닐허힘;ㅏ헐허ㅏㅋ읺;ㅏㅓㅣ;ㄴㅇㅀ 쪽지나 댓글남기세요 답...
-
2016 sms 한국사 직전 모의평가 라운지 & 문제지 및 해설지 85
시험보느라 수고하셨습니다. 학원에서 오는데 시내버스 놓치고 또 할로윈이라 그런가...
-
오르비큐에선 다운이 이제 더이상 불가합니다. 1300여명이 응시했습니다. 1....
-
내일 오후 8시! 물리 1 직전 모의고사 시행합니다 11
내일 오후 8시, 2016 대학수학능력시험 ReadMe.txt 물리 1 직전...
-
ㄹ선지 개별 국가를 통제할 수 있는 중앙 정부의 출현이 불가능한가? 이 선지가...
-
[OrbiQ] 사회문화 최종파이널 모의고사 시행 공지!!~(LUKAS) 17
안녕하셔요. 루카스 장진민 강사입니다. LUKAS Real Final 마지막 일정인...
-
3번 (가) : 조류의 흐름으로 터빈을 돌려 전기를 얻는다. 조류의 유속 을 알면...
-
8번 답이 왜 3번이죠 ㅠ(가)는 아무리 봐도 을미사변이고(나)는 아무리 봐도...
-
한 번 풀어보고 싶은데 ㅠ
-
[OrbiQ] SMA 직전모의고사 수학 B형 시행 최종 공지 5
시행 시간 : 2015년 10월 31일 오후 9시~10시 45분 (문제지 인쇄시간...
-
[재공지] 내일밤 10시 SMS 한국사 직전 모의평가 실시합니다! 5
안녕하세요 한국사 수험생 여러분 10월 31일 오후 10시 2016 SMS 한국사...
-
[생강] 제 2회 생강 직전모의평가 (생명과학1) 시행안내 11
안녕하세요 생강입니다. 처음엔 재밌어서 만들기 시작한 모의고사였는데 반응이 의외로...
-
평점제도 좋은데 해설지 문제지 제발 새탭으로 나오게좀 해주세요... 그리고...
-
[물리 1] D-11, 물리 1 직전 모의고사 시행 예정 4
2015년 11월 1일 오후 8시 정각 (D-11)에 물리 1 직전 모의고사를...
-
[행키] 화1 닥터존슨 직전 모의고사 홍보 및 행키 직모 0
1. 1) 11월 1일에 제가 검토한 모의고사 한 회분이 오르비큐에서...
-
세계정부 수립될 수 있다고 보나요?????????? 문제지, 해설지마다 말이...
-
안녕하세요 Sonic입니다. 올해 저의 마지막 모의고사인 Sonic Encore가...
-
[OrbiQ] 윤리와 사상 최종 모의고사 문제지 / 해설지 탑재 / Q&A 피드백 여기로!~ 26
응시하시느라 수고 많으셨으용!~ 간단한 소감 남겨주시고 댓글에 질문도...
-
얼마 전에 올라온 OrbiQ 관련 건의글을 보았습니다....
-
먼저 저자에게는 인세를,응시자에게는 치킨을 하사하심에 감사드립니다. 다만 몇가지...
-
아기다리 고기다리던 오르비Q 치킨이벤트 당첨자 발표가 있겠습니다.당첨자 발표가...
-
[필독] 2016 SMS 한국사 직전 모의평가 10월 31일 시행합니다!!! 1
안녕하세요 한국사 수험생 여러분 10월 31일 오후 10시 2016 SMS 한국사...
-
안녕하십니까? 저는 올해 15학번으로 대학에 들어갔고 화학1에 관해 출제 및 검토...
-
critical 모의고사 4회에 오류가 너무 많네요... 6번에 발문과 5번 선지...
-
[생활과 윤리 최종 모의고사 ] 오늘밤 11시에 시행됩니다 ^^!~ 78
루카스 장진민 강사입니다. 주말 동안 제작된 모의고사를 노량진과 대치동 수험생들에게...
486..