컴공 일기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를 선물하세요.
-
브라운 레드 사기 Swc 팔레트 만들기 영어 교육청 2개년 프린트하기 도시락 사달라고 엄마 닦달하기
-
30일 그냉 훅가고 이거 x12 하면 12년이고 x120 하면 10 년임
-
쉬는시간이 ㅈㄴ 너무길어서 짜증남
-
수능당일 가채점 주작 나왔을때부터 성적발표 당일까지 스스로 해명하면 폭로 안하겠다고...
-
러셀 질문 3
6평전에 블루로 들어갔다가 6평 22211 받고 평백 94/3합5인데 이거 서의치나...
-
다들 뭐함 4
심심한데 놀아줘라 크아아악
-
기출 변형인거같은데 무슨 기출문제인지 알려주실분 계신가요?
-
더워더워더워~ 0
개덥네진짜아ㅠ
-
요새 교대 6등급인데 40대후반에 교대들어가서 50대초에 졸업하고 62살까지 기간제...
-
눈 낮은거임?ㅋㅋ
-
수학 고점온 듯 1
요즘 28,29,30들을 손쉽게 풀어내고 있음
-
서프후기 2
국어 무난 수학 무난 영어 어렵 탐구 매우어렵...
-
물리하다 정신병 올 거 같애여… 막 너무 어려워서 못 해먹겠어요는 아닌데, 기분...
-
정승준 남지현 누가 더 조을가요ㅠ 6모 확통 84점이ㅂ니다
-
정은경, 재산 56억 원…배우자, 손소독제 관련 주식 신고 0
정은경 보건복지부 장관 후보자가 약 56억 원의 재산을 신고한 것으로 5일...
-
교재 ㅇㅈ 3
허허
-
칼럼을 읽기전엔 경력과 성적을 확인하자. 과외를 받기전엔 당당히 성적표를 요구하자....
-
개념 암기량 뭐가 더 많아요?
-
일단나부터
-
미적 다 맞은거 같은데 다들 난도 어땠음?
-
울룰루~ 2
너는 누구니? 서그럭서그럭 지워지겠지 누구냐고?
-
서프 현장응시함 4
미적 96말곤…..
-
울룰루~ 3
맴매야 맴매
-
진짜 대치동 어둠의 스킬인거심?
-
저격해요 2
저... 격해요 이젠 이것도 고전이 돼 버린...
-
흐흐흐 라죽완성 11
개죽이냐는 나쁜 말은 ㄴㄴ
-
잠 잘 못잘때와 충분히 잤을 때 공부 효율 자체가 달라지는듯 잠 잘 안자면 지문도...
-
권은비미쳤다 2
레전드 갱신
-
내일 시험보는것보다 이게 더 떨린다
-
정성추 0
-
칸타타님 4
N제는 안 만드시나.. 과년도 히카 모아서 내면 되게 좋을 것 같은데
-
보현 실시간으로 봤는데 18
현타 ㅈㄴ왔었음 그때 두시간 천하때 갑론을박이 개꿀잼이었는데 오수하면 국어...
-
내랑 네는 3
내랑 네는 둘 다 발음이 똑같아서 구분하기도 어려운데 왜 이런 식으로 발전했을까요?...
-
늦어서 죄송합니다ㅠㅠ 열심히 만들었는데 오류가 있을 수도 있습니다. 요즘 자작문제...
-
라죽 ㄱㄴ?
-
귀납적으로 성적 점프 전에는 항상 기출을 한번씩 돌렷단 말이지
-
재능 vs 노력 3
재능 압승
-
잇올 버스 타고 왕복 40분 , 셔틀이 없어서 버스 타야함 새로생겨서 시설이 완전...
-
누가 미래 기대치 더 높음? 계약학과 제외
-
솔직히 8
좀 그렇다
-
음료 추천 받음
-
여성의 생식기를 뜻하는 '십'은 단독으로 나타나는 예시를 찾기 어렵지만 합성어...
-
영어 이제 워드마스터 거의 다 외워가고 6모때 69점 순수실력 64점이에요 6모...
-
별로 의미도 없고 맨날 형식이 뻔해서 변별력도 별로같은데 차라리 극한이나 역함수,...
-
엄준식 그는 대체..
-
아들아 요즘에 그렇게 커뮤같은거 해서 망하는 애들이 많다더라 9
아들아....혹시 설마 오르비 같은거...하니...?
486..