컴공 일기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를 선물하세요.
-
꽃가루를 날려 0
샴페인을 더 크게 터트려
-
눈물이 나네요 몸은 늙어가는데 정신은 애가 되고 있는 것 같음
-
현역 3
공부시간 확보 ㅈ도 안되네
-
수학 이미지t 세절쉬하고 미친기분 시작편 다 끝나가서 실전개념 들어가려는데 이미지t...
-
ㄱㄱ
-
센츄 다니까 3
빨간글씨여서 예쁘네
-
섹준완 ㅋㅋㅋㅋㅋ 11
잘먹겠습니다
-
할 수 있다 4
난 할 수 있다.
-
(∩ ᐛ...
-
문제풀때 뇌랑 손 싱크가 서로 안맞네요
-
영화 중에서는 2
오펜하이머가 탑이라고 생각해요 이 것보다 재밌게 본게 없음 2순위. 그래비티
-
인생 첫 미팅도 나로 인해서 마무리가 망하고 과제도 자바 억까당해서 1분지각하고...
-
글을 읽기 전 얘들아 결혼은 할라고 마음 먹으면 어지간하면 한다. 물론 진짜 답이...
-
https://youtube.com/shorts/7kp04HmHzkA?si=o9K-K...
-
진짜 30문제 100분동안 운영하면서 풀라고 낸 문제가 맞나? 6,9모에 나온것도...
-
이해는 되는데 기출에 적용이 좀 빡세네....
-
분했지만 어쩔수없었음 그때 취소된 국제, 국내대회들이 몇개야
-
공부좀해야지
-
유튜브프리미엄 싸게 이용할 방법 알려주실 분~~
-
잘잣다 8
뻥이고 찐 자러간다리우스
-
갑자기 6
삼겹살 땡긴다 캬
-
힘내라 샤미코
-
85000원 에바긴 한데 ㄱㅊ네 이기상 커리 적덩히 쌓이고 드릴도 풀었을 때 한번 사야겠다
-
전자기 같은 준킬러 같은건 개념완성 듣고, 열역학이나 상대성이론 같은 쉬운 쪽은...
-
내신 썰 6
고2 2학기 내신으로 미2랑 기벡을 동시에 하는데 중간고사 때 100 100 맞아서...
-
오늘 시험지 버려진 거 구해다가 풀었는데 41 뜨던데… 화학 후기는 왜 못 본 거...
-
난이도는 평이한 것 같기도 한데 수가 너무 드러워서 풀기 시름
-
예를들어 연필통을 던진다던가
-
생윤황님들 질문 4
ㄷ이 참인데요 참인 건 뭔가 직관적으로 와닿았습니다만 이게 왜 참인지 명확하게...
-
[화학1 킬러 초스피드 해설] - 241120 240320 250620 250920 241020 251119 0
사실 중간고사 공부하다 만든거라 1단원내용뿐입니다.뭐 잘 활용하시면 좋을듯요 평균...
-
잠 7
ㅃ
-
학교 끝나고 3덮 미적영어사문지구물리 풀어봤어요 국어는 주말에 따로 풀 예정 미적...
-
1이랑 3 케이스밖에 안되는것 같은데 계산 밀어보면 틀리네
-
덕분에 재밌었어요
-
님들 트와이스 데뷔한지 11
10년 된 거 아셈? 시간 빠르다
-
고고잇
-
진짜 존나열심히 해도 안 되려나
-
그보다 루돌프 대회 운좋게 1등 댓글은 ㅈㄴ 웃기네 ㅋㅋㅋ
-
대학 과제 1분지각함 시발 ㅈ같네
-
된다구요? 알겠습니다
-
산업공학과 1
설카퍼연고 아니면 메리트가 떨어지나요?
-
내신은시바 3
학교별 편차가 에바임뇨… 화학 3등인데 3등급 시발.. (/¯◡ ‿ ◡)/¯ ~ ┻━┻
-
학점이…
-
약사보다 좋은것 4
강사
-
이지랄했는데 다음주에 전투신 없으면 혈압 ㅈㄴ 오를 듯
-
1-1 중간 (공부함) 전교 1등 1-1 기말 (공부 대충함) 전교 2등 1-2...
-
둘다 잡으려고 했다가 둘 다 어정쩡하고 글로 돈 벌게 생김 --- 전사고 내신...
-
선배님들 지구과학 내신준비할 때 마더텅 무슨 버전으로 푸셨나요 4
고2버전 수능버전 있는데 고2버전 고르는게 맞겠죠?
486..