컴공 일기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를 선물하세요.
-
안녕하세요. 합격자 후배님들! 저는 인하대 영어영문학과 22학번입니다. 인하대에...
-
강남대성 본원이 제가 인문이라 선생님이 어차피 똑같거나 더 좋고(스투보다) 가격도...
-
의대생 과외는 10
잘 못가르쳐도 짤리는경우 별로 없나요
-
20000 안쪽?
-
본인이 고대 22학번이다 이러면서 작년 수능으로 고대 공대 입학했다. 자긴 강대...
-
미적 정규반이랑 수1특강까지 하고있는데 어싸가 미적2,3,4주차 수1은 1,2주차...
-
안녕하세요, 경북대 25학번 신입생 여러분! 저는 경북대 23학번 재학생입니다!...
-
파토나도 금융치료 ㄱㄴ할듯
-
화1 화2 생1 0
메디컬 지망 지1 끼고갈거고 수학은 고정 높1 국어가 불안정함 화1 작수 50 <-...
-
예비 고2입니다 마플 교과서 수1 수2 2번씩은 돌렸고요 작년 수능 공통 풀어보니까...
-
패논패 과목이라고 걍 버려버리는 짓도 안 할거임... 20학점 신청했는데 패논패...
-
저능아임 2
어제 있던일도까먹음
-
나가서 옯스타나 만들래 28
거기에서 스토리로 ㅇㅈ하면 누가 봤는지까지 알 수 잇겟지
-
11211로 올린 분은 봤음
-
난 점점 음지화가 되고있어..
-
갑자기 밀려오는 자괴감이에요
-
근로장학생 후기 1
한 일 회계서류 17500장 사본 뜨기 사본 뜬거 책 만들기 정신나갈거갓애
-
자체 휴강도 진짜 그만하고.. 건실하게 살자
-
관종 등장
-
아 집 갈까? 6
와서 쳐먹고 오르비만 할거면 카페 왜 왔냐? 시발...
-
전담 궁금한 점 3
막 딸기맛 포도맛 있던대 그냥 딸기를 먹으면 되는 거 아님? 느낌이 다름?
-
3월에 나온다는데 그때까지 시즌1만 작년꺼로 풀려는데 괜찮을까요?
-
자전 가면 0
찐따일까요
-
저녁ㅇㅈ 5
-
기분?이 좋나?
-
뭐 새터, 개총, mt이런거 나가야 하는건가..? 그럼 난 사수해서 가도 못하는건데 아
-
ㅇㅈ메타 13
열어보자 난 기숙학원이라 ㅂㄱㄴ
-
파랑머리에 은테다니까 14
완전예쁘다 ㄹㅇ루
-
해맑으시네...최근은 아닌듯
-
마감이라니
-
저녁여캐투척 12
ㅇㅇㅅㄱㅇㄱ
-
엄청난 뭔가가 있음요? 결국 유기적으로 읽어라 붙여읽어라 이런거 같던데 국어는 결국...
-
다들 나는 연애 언제해봤냐고 묻길래 연애경험 0번이라고 구라치기 좀 쪽팔렸음.....
-
시작..
-
커피는 벌컥 벌컥 마시고 본인들도 개의치 않아하면서 솔직히 그냥 거부감 때문에...
-
응애 응애응애
-
배기범 물리1 2
필수본이랑 삼순환 꼭 병행해야함? 아님 그냥 필수본 끝내고 3순환 해도 되나
-
윈터 때 보면 진짜 싹 다 강민철임. 간혹 김승리 있긴한디 거의 압도적으로 강민철...
-
오르비 습관 11
이상한 글에도 댓글에두 들어가면 다 좋아요 누름 이상한 댓글도 내용 안 읽고 4개...
-
지금 그 전적대 친구들이 그리워서 지금 친구 사겨도 예전같이 잘 맞는다라는 느낌이...
-
맛있네요
-
초밥다먹음 1
마트초밥도 맛있네
-
렛츠고
-
올해 첨 현돌로 공부 할꺼은데 연계는 따로 공부해야하는지 궁금합니다!
-
투데이 400임 ?
-
를 상상해보신 n수분들은 좋아요를 눌러볼까요?
-
이룰 수 있을까요
-
슬금슬금 들어오는 사람들은 뭔가요?..
486..