컴공 일기261
- 동적 배열을 즉석에서 한번 구현해봤습니다.
이동시맨틱, 대입연산, 복사생성, …, 자료출력 등등 구현을 했습니다만
결정적으로 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를 선물하세요.
-
공부한애들 중에서는 전과목높 3 4or전과목 낮 2 3이 제일 많이 보임 14111...
-
ㅈㄴ무섭네 3
-
가르마하고 다니는데 겅부하면서 아침마다 손딜 하는거 너무 귀찮은데 그냥 덮머로 다닐까요
-
하품하는 개 25
그러하다
-
22-23시즌수열느낌으로내주면안되나
-
물2 생2 수능볼려고 하는데 메가스터디 컨텐츠만으로 대비하기는 어렵나요?
-
https://orbi.kr/00071400241 아니 왜 관심이 없지
-
책사고싶다 3
느리게읽으면 섹..스하..고싶..다
-
[즉석시] 눈맞춤 11
내 그대를 바라봄은 너무나도 당연한 것입니다 당신은 그토록 빛나서 누구라도 쳐다보지...
-
돈까스 생각하며 버텼는데..
-
왜냐면 책이 진짜 넘사로 예쁨요 ㅋㅋㅋ 9평 사건은 안습이지만 저는 개인적으로 도움...
-
오랜만에 안끊고 2시간째 보는중이에요
-
명동 교자 명동피자 제외 추천 부탁드려용
-
전 독서론 선택 문학 독서
-
교과나 학종으로 줄을 세웠는데 비교적 내신이 높던 지원자들이 최저를 못 맞춰 최저를...
-
개 쪼이네 진짜
-
근거기반 1
근거기반 정책결정 같은 게 태초에 불가능한 이유가, 컨설팅 하던 분 말씀도 그렇지만...
-
어떤 시험지가 더 어렵나요??? 경찰대 88점이면 확통 몇점정도 나올까요?
-
독서는 김동욱 일,취 하고 성적안오르거나 시간남으면 이원준쌤 브크, 기출문제집은...
-
팥붕,슈크림붕어빵 피자붕어빵, 짜장붕어빵 김치당면붕어빵,야채당면붕어빵...
-
이거 진짠가요 그래프 생각만 해도 올라오는데 미적을 끌고 가야하나
-
작년 6평부터 22번에 수열을 내는 이유가 뭘까요? 전 뭔가 공통의 꽃이었던 번호가...
-
나 자신에게 건네는 말
-
괜찮아 문장만 수강하고 넘어갈 수 있는 난이도 인가요
-
머리가 아파 1
으악
-
석박지를 넣어 끓인 크림스프+밥 크림스프의 느끼한 맛을 석박지가 잡아주어서 맛이...
-
개비싸네
-
쿨뷰미눈나들이 길물어봄 ㅋ
-
선착순 천덕 8
-
왜지
-
[단독] '검열 역풍' 우려에도…野, 방송사·포털 대표 청문회 연다 3
더불어민주당이 방송사·포털 등을 대상으로 한 '12·3 내란 관련 방송 탄압 및...
-
[고려대학교 25학번 합격] 합격자를 위한 고려대 25 단톡방을 소개합니다. 0
고려대 25학번 합격자를 위한 고려대 클루x노크 오픈채팅방을 소개합니다. 24학번...
-
파인애플 피자도 잘못된 음식입니다 하지만 그중에서도 민초는 개악질임
-
또 중국에?…‘반도체 세정 기술’ 유출 시도 전직 삼성전자 엔지니어 구속 1
중국 최대 반도체 장비 회사의 국내 법인에 협력해 ‘국가핵심기술’인 반도체 세정...
-
홀수일때랑 짝수일때 케이스 나눠서 역추적하는거 비슷한듯
-
효율2 1
범주화하기 이번 예시는 문풀 문제들을 여러 유형으로 나눌 수 잇을텐데 이 때...
-
전 보통 17분
-
주 두회 수업 두시간씩하고 숙제는 일주일에 씨뮬 모고 새갭니다 보텅 수특 푸는...
-
사장님, 슈붕주세요! 12
아니 팥붕이 나을랴나
-
ㅇㄱㅈㅉㅇㅇ?
-
살면서 국어 공부라는 걸 해 본 적이 없음 어차피 공부 안 해도 지금까지 푼...
-
움찔움찔
-
그것만이 옳다
-
스카이 이런곳에서
-
효율1 7
언재나 큰 부분 -> 작은(지엽적인) 부분 순으로 해결한다는 마인드 큰 부분을...
-
심찬우 5
심찬우쌤 커리 탈까 하는데요 1. 내일부터 시작할려 하는데 좀 늦을까요? (아님...
-
페이트 제로 중간부터 페그오까지 다 보기 청춘돼지 1기제외 다 보기 단다단 보기...
-
입대하고 나서 점점 진짜가 되어가는중..
-
-한국은 국제범죄 국가가 될 수도 있다. "美부정선거 투표지, 대한항공 전세기가...
-
붕어빵 얼마임? 16
동네엔 2000원에 3개... 돈이 없어
486..