컴공 일기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 0
기력도 없는데 알바하러가야하는;;
-
일단 삼전 맛보기로 샀음 5 0
-
더워요 8 1
-
투자심리가 진짜 중요한데... 3 0
당분간은 큰호재 아니면 좀 힘들것같음 이란,미 완전합의 / 메모리 기업 호재 /...
-
서바 전국 컨텐츠하시는 분 중에 데이터 공유할 분 찾습니다. (지속적으로) 6모...
-
7월 모의고사 사문 16번 해설 오류에 대한 입장 11 1
7월 모의고사 16번 (문화의 변동)과 관련하여 다수의 수강생이 질문을 하고 있어...
-
35만원으로 두달 버텨야하는데 3 0
30만원 현질해버림 인생좆됨 쿠팡뛰어야하나
-
배급받고 싶다 1 1
배급을 주세요 대 재 명
-
아 슬슬 기분나쁘게 더워지네 1 0
그동안은 기분은 안나쁜 더위였는데
-
대학에서 만난사람들이 9 0
찐친구들을 사귈 의향이 없을 까봐 그게 두렵다
-
애들 개잘하네 응시인원 많지도 않은데 40위권으로 밀려붓노
-
노베 -> 의대합격 후기 3 0
6개월 뒤에 글 수정해서 작성할게요
-
시계 줄질을 하였습니다 7 1
생각보다 iwc랑 나토밴드랑 잘 어울리네...
-
주식 ㅈ됐네 1 1
내 100달 생활비가
-
님들은 0 0
대학 가서 찐친들을 사귈 의향이 있다?
-
하 2 1
배아파 뒤이ㅣ지겟다
-
지하주차장에 앉아서 제이팝 틀어놓고 담배피면서 방귀 세 번 뀌는 사람이 안 천박한...
-
더워 뒤지겠는데 5 0
기어이 꾸역꾸역 아득바득 담배 피우러 쳐나가는 내가 존나 추하게 느껴짐
-
나도 잃긴 했는데 극소량이라 강건너불구경 중 이참에 꺼드력거렸던 능능아들 싹 휩쓸려서 없어져라
-
세상에서 가장 안전한 투자 2 0
짤이 너무 위엄넘침
-
이해원배터리4칸풀어따 3 0
기분조으다 근데오래걸려서막좋진않으다
-
그림 그려드림 5 0
-
entp 꼬시는 방법 좀요 17 2
제벌
-
동사하면서 유일하게 학습 의의가 있나 의문이든게 율령 파트였는데
-
근데 급하면 안될 것 같습니다 지금 코스피가 차트가 절대적으로 중요한 상태는...
-
흑흑 이거 진짜 실수하면 큰일나겠다 심장이 벌렁벌렁하네 분멍 관계식 확실하게...
-
다이어리 처음사봣는데 3 2
이 종이 뭉치가 7천원이라구? 이래서 요즘 다 굿노트나 삼성노트로 서식 만들어...
-
오메가 3회차 국어 2 0
82점이면 몇등급임? 아니 그리고 이고 지문이 하나도 안읽혀
-
ㄹㅇ로 그 보라색 핑크색 알록달록한색 여러가지로 엄청남
-
생윤 잘하는 법 알려주세요 3 0
네?
-
ㄹㅇ신기함
-
자격지심이 없고 재미있는 남자는 일단 무조건 연애를 하더라고요 물론 못생겼는데...
-
얘들아. 오류 맞냐고 2 0
맞냐고
-
얘들아. 저거 오류 맞냐고 0 0
좀 알려줘 어.. 제발..
-
킬캠 해설듣다보면 1 0
요즘 상쾌 라는 단어에 꽂히신거같음 근데 뭔느낌인지 이해가 가서 개웃김 ㅋㅋ
-
러셀 오메가 콘텐츠 3 0
대치러셀 재종(바자관) 들어갔는데요. 오메가 시리즈 콘텐츠 모두 구매해야 하나요?...
-
친구가 이거 줬는데 17 1
맘에 듦 ㅎ
-
노베이스는 기출부터 보세요 0 0
기출 -> 개념 순으로 가시면 됩니다 간단히, 해설과 함께 기출 문제를 풀지 말고...
-
240921 얜 ㄹㅇ 뭐임
-
집공하는 분들 집중 잘됨? 2 0
집공 할만함?
-
Bac 각으로 boc 각 반갈죽하면 각 나오는데 그거랑 dbo랑 각 정보가 서로...
-
대체어떻게해야저걸로확실히깔끔하게확정짓지
-
일반 수바 1회 ㅈㄴ어렵다던데 0 0
전국 이랑 비교하면 어떤 차이점이있음? 객관식이 주관식보다 어려운거??
-
강은양T 수업 질문 0 0
안녕하세요! 문학개념어 강의를 듣고 은양선생님의 문학강의를 수강하기로 한...
-
나랑 놀아줄사람 1 0
-
수능샤프 고장 2 0
쓰다가 톡 소리 나더니 부러졌어요.. 이거 내구성 무한 아니였나요..? 수능장이면 ㅎㄷㄷ
-
영어공부법 ㅠㅠ 2 0
영어공부 어떻게하나요 도대체 맨날 3등급 더도말고 2등급만 맞고싶은데 1-3까지...
-
나같은놈이 꾸꾸로 입으면 망한다는걸 계속 인지해야댐 그래서 사고싶은거 있어도...
-
전문적으로 해주는곳 가긴 부끄러움 몬생겨서..
-
노모어피자 베이컨 포테이토에 리치골드 크러스트로 변경 13 1
피자는 그냥 저걸로 종결 존맛임

486..