컴공 일기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를 선물하세요.
-
예비동기한테 기만당함 34
이럴라고 연락처 줬나 자괴감 들고 괴로워
-
프사 골라줘 (투표) 55
내프사 골라조 다른옯도 오리비그림 프사하구싶으면 그려줄게
-
렌즈를 보존액에 담가서 보관하자나요?? 전 리뉴쓰는데(투명한 통에 든거) 끼기전에...
-
답글남겨주세용~
-
세금 살살녹는다~~
-
우리쯔 텐텐텐텐 7
77ㅓ억
-
[단독]이럴거면 왜 탈르비했나 모르겠는 옯창이 있다? 44
본인 놀리는 글 올리자마자 바로 반응해...
-
ㅇㅈ 13
아싸라 휴일에 혼자 쇼핑옴 ㅠㅠ
-
세븐틴 아육대 탈락 15
모 탈르비언 집에서 꺼이꺼이해...
-
안녕하세요. 24세. 무직. 고졸. 군면제. 남성 코드킴입니다. 인문논술 관련 질문...
-
두분 강의 다 인강으로 들을 수 있는데 천체가 박선쌤이 오지훈쌤보다 강한건가요?...
-
현행 의료법상 병원장만 의사면 재단 이사장은 비의료인이라도 법적으로 문제 안되는거...
-
빨간 날 근무해 Honey 깨물면 점점 욕하는 진상 그 놈 코너 편의점 찾아봐...
-
뒷발 뽀짝뽀짝
-
안녕하세요 지금 시발점 1회독을 끝내고 바로 뉴런들어간 문돌입니다. 현재 진도를...
-
난 진짜 멋있다고 생각하는데.. 경영 경제 이런거 존멋 어문 존멋 사회학과 심리학과...
-
편순이) 박제 합니다~ 39
뭐하는 새끼야; 이새끼랑 한 놈 더 있음 맨날 와서 이상한 댓글 다는 놈
-
전 알아요 방금 닦아봤거든요
-
교재나 인강이나 학원 추천해주세요!!!
-
토토를 14장이나 뽑아가신 아재가 편의점에 휴대폰을 냅두고 가셨는데, 당연히 우리...
-
남자애들 무리인데 00년생이고 올해 들어서 합법적 스포츠 토토하러 편의점 가끔 오는...
-
카메라 다 있지 않나.. 창으로 다 보이기도 하구요
-
공부특 3
존 나 실 어
-
ㅇㄹㅂㄷㄱㅅ 10
-
개우울하다 진짜 16
.
-
손님들이 로또 당첨 됐는지 확인 해달라고 용지를 가져오시는데 엄청 많이 가지고...
-
진자좃댓내 18
원래 계획은 수탐 개념 한번씩 돌리고 안들은 2학기과목 진도 끝내고 이번에 들을...
-
진짜 간에 기별도 안 가네
-
Tmi) 2
차단하면 모아보기가 깔끔하다
-
잘생긴 2
유대종
-
잘생긴 3
유대종 센세 스트레칭하실때가 세젤귀임
-
잘생긴 4
유대종
-
ㅇㅈ 6
영
-
추억팔이 10
흑흑나도고운말만쓰는현역일때가잇엇는데쉬발
-
언제치우지 9
아ㅋㅋ
-
얼버하이 13
이안닦은지24시간넘은듯
-
홍대 다군 122모집 예비 149번 1차70명빠짐 17ㆍ 121퍼 18ㆍ139퍼
-
바로 휴학하는데 새터갈까요?안갈까요?? 참고로99 재수에요
-
오늘의 혼술상 22
예매 깜빡해서 고향 못 갔음...
-
ㄷㄷ
-
속보) 도쿄대 대학원생 이모, 4시간째 카트라이더 중.. 4
드리프트 할 줄 몰라.. 홧김에 돈슨 캐쉬 50만원 충동 결제.. '충격'...
-
에어팟 2
2세대 언제 나와요?? 세뱃돈으로 사야되는데 1세대 빨리사고싶기도하구...
-
엄마, 장녀 vs 아빠, 차녀 구도로 윷놀이 중에 엄마 고집대로 윷말 놨다가 3마리...
-
계명의 0
계명의 추합 몇번까지 돌았나요?
-
한의대 바라보고 공부하고 있는데 올해 수능 잘못보고 설에 고향내려왔는데......
-
문재앙특) 18
금메달리스트에 축전보내고 손흥민 락커룸 처들어갈 시간은 있고 몇십만 청원한...
486..