컴공 일기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를 선물하세요.
-
지능 ㅇㅈ 4 1
분명히 낮은게아닌데 내꼬라지는왜이렇지?
-
드릴7<4규 했던사람 누구야 1 1
드릴7이 더어렵잔아... 수2는 또이또이인데 수1은 드7이 훨 어려운듯
-
아니 열품타 안 끄고 갔네 3 0
영어만 4시간 함ㄷㄷ
-
진짜모름 걍 영재학굔데 앞에 예술만 붙인거임?
-
반수생 24일차 D-122 3 1
국수 강의 밀도가 상당히 높앗음 김동욱T 갠적으론 굳
-
수시 도태됐긴 했는데 17 2
여기 과중학교라 과떨들 ㅈㄴ 많았단말임 나는 1학년 1학기때 걍 통합과학 공부...
-
시대 사문 문서연쌤 0 0
6모 48점 1등급 7모 46점인데 시대인재 문서연 쌤 수업 들어도 괜찮을까요?...
-
평반고의 전교과 3.03에 완벽한 하향곡선. 생기부는 보는 쌤들마다 감탄할 정도로...
-
오공완 4 1
-
나는 외고가고싶었는데 1 1
중딩때 전교권에서 좀 놀았다고 이 지역은 미래가 없다 싶어서 외고로 ㅌㅌ할라고...
-
대종쌤 우승시켜 드리려 했는데 평균값이 아니라 3인팀 합산이었나 그 래서 심찬우팀...
-
은근 6 1
전국중간-낮자사고가 꿀통임 4점대도 좋은 대학교 가더라
-
바로 저기 촌구석 전학가서 지역인재에 농어촌 조진다
-
풀어. 2 2
단어 알지? 풀어.오늘 n제 책 펴서 풀어.바보 같은 실수로 틀리는건 절대 안...
-
수특 국어 독서 0 0
김승리 풀커리고, 이미 tim까지 해서 기출은 끝났고, 연계 공부중입니다. 독서...
-
영과고= 설공 + 계약+ 카포지디유 수시로 가기용 외에는 가치가 없다고 생각함 정시...
-
내가 안가면 누가 가냐 생각했는데 좀 준비하다 중1때 가정사땜에 멘헤라터지고 아예...
-
고1이랑 고2 초반때 공부를 아예 놓은게 진짜 큰듯 4 1
지금 보면 그때만큼 짐승새끼가 따로 없엇던 그랫으면 지금보단 나앗을듯 ㅅㅂ
-
ㅇㅅㅇ
-
하 씹 대학 서울로 다니고 싶어서 수능 친다 관악 딱기다려
-
1. 내 친구가 학원책 빌려갔다가 유빈 비슷한데 올려서 학원이랑 내가 싸웠음 2. 그냥 도태됨
-
방학공부계획 2 0
내일플래너사기책읽기모의고사만들기국어수특하기(ㅈㄴ급함)수완도풀기물2갤칼럼다시보며실모벅벅...
-
나만 과고 손해라 생각하나 4 1
메디컬을 정시로 밖에 못 가지않음? 과고니까 공부잘하겠지 이런걸로 단순히...
-
과고 떡밥 15 0
이 도는 것 같은데 저는 할 말이 전혀 없어서 이만 공부하러 가보겠습니다. 다들 파이팅입니다
-
난 과고가 너무 가고싶엇는데 0 1
라임쩐다 과고가고싶엇음 근데 저때메타인지ㅆㅅㅌㅊ여서 당연히 과고는 들어가기도힘들고...
-
뭔가뭔가 대입까지 고려하면 일반고가 나을것같은 느낌이 들어서.. 맞는 판단이었던것...
-
저능해서 그냥 벡터 안써야겠다 0 0
그냥 비역학 최대한 줄이고 그냥 레전드 계산 간다
-
암만 좆빠지게 해도 붙엇으면 내 지능으로는 디지유 이상을 거기서 못갓을거같음
-
몸 아플 때 얼마나 쉼? 7 0
오늘 지병(부정맥) 증상이 간만에 도져가지고 119도 부르고 (결국엔 증상이...
-
휴학승인됐네 14 1
사유대충썼는데별말없군
-
뻥이고 자사고로 바뀐 건 알고 있었는데 문과도 대우해준다길래 왔음 물론 ㅈ도 대우 안 해줌
-
과고는 생각도 없었음 2 0
영재고는 더 없었고 중딩 내신 빡세게 하고 그냥 물 흐르듯이 살았던거 같음
-
근데 별 생각 없어서 그냥 일반고로 옴
-
내신을 해 본 적이 없음 2 0
진정한 정시파이터
-
난 중딩때 들어가면 9 1
영과고는 쳐다보지도 않고 수능만 할거임 거기 가더라도 내신 도태되었음 + 사회성...
-
세지 0 0
기상쌤 계속 학생들이 어떤말하는지 보러 커뮤니티 오신다고해서 재미로 써봄. 기상쌤...
-
휴학 사유:반수 5 3
ㅇㅇ
-
중학생때 과고를 알았으면 0 0
내신 더 해서 과고갔지 ㅅㅂ
-
방학 3일이 맞냐? 0 1
수부터 금까지 3일임 학교 ㅈㄴ 가기 싫네
-
훌리 상대하지 마라 그냥
-
문학 연계 공부 하려는데 추천부탁드립니다! 강의, 수특사용설명서등 다양한 의견...
-
입결이 밥먹여주는 거 아닌데 3 6
훌리짓 해서 뭐해
-
김범준 러하 개쩌는디 2 1
쉣 문제퀄 꽤 괜찮네
-
7모 성적조사 참여 요청 0 2
https://orbi.kr/00078983752 크럭스 테이블 업로드를 위한...
-
의치한약수를 가야 하는 이유가 현실적인 이유라면 6 5
커뮤니티를 많이 의식하는 사람은 서울대를 가야 하는 이유가 있더랬죠 지금 메타를...
-
집갈래 0 0
책사야되는데나의귀여운책들이비에젖지않고잘올수잇을까
-
피램vs문학론 1 0
고2 여름방학에 푸는 기준
-
대구과고 붙엇더라면 3 1
깔개됫을듯
-
졸면 깨워주는 사이트 오해가 있어서 말씀드립니다 0 1
위 화면처럼 유튜브나 다른 음악은 인터넷이 끊기면 사용할 수 없습니다. 인터넷 없이...
-
지인선 즌2 어느정도임? 2 0
공통 설맞이 즌1 끝나고 이해원 즌1들어가기전에 지인선 즌2가볼까 고민중

486..