컴공 일기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를 선물하세요.
-
메디컬은 보정기능도 있던데 거의 하루이틀이면 실수들 80프로는 들어올까요?
-
새거고 잘못 구매해서 원가 21500에서 후하게 만이천원에 해드림
-
찾아봐도 뭐 나오는게 없음요 나오는것도 없고 아는게 없으니 사탐런이 낫나 아닌가 판단이 안됨
-
수시 말아먹어서 정시로 문과 상위 1%인데도 학교에서 모르는 쌤들 많음 수시로는...
-
[고려대학교 25학번 합격] 합격자를 위한 고려대 25 단톡방을 소개합니다. 0
고려대 25학번 합격자를 위한 고려대 클루x노크 오픈채팅방을 소개합니다. 24학번...
-
딴거해야지
-
ㅇ엑셀파일이요!
-
이런 ㅈ반고에서 흔히들 말하는 '1학년때부터 정시해서 인서울 이상 간 놈 없다'의...
-
진학사 5칸 3칸 1칸 접수했습니다 목표는 2합입니다 설마 3떨은 아니겠죠...?...
-
전 안 써서 잘 몰라요 알려주세요…
-
모두 신성한 춤사위로 최초합을 쟁취하시죠
-
ㅆㅂ내19만원
-
긱사 화장실 샤워실 공용이라 싫은데... 통학 왕복 세시간(거진 3.5시간) 해보신 분 계신가요?
-
내 프로필에서 좀만 내리면 내 썰도 있어...읽어바
-
어떤게 더 어려움? 공대임
-
실지원보다 경쟁률 터지고 나서 계산기 상으로 봤더니 등수 많이 밀린 ㅠㅠ
-
이거 일괄로 4천원에 팜
-
떨어지면 해결 해결...이 맞나?
-
특정될까봐 못물어보겠음 아
-
셈퍼계산기 2
정확도 높길 기원..
-
연대 입학장학금 4
입학정원의 3%이내라는데 이게 최종등록자기준인가요?
-
회기이신 분? 5
점심 먹어요 냠
-
현재 고2고 원래 물1화1으로 수능치려 했는데 화1이 망해서 화2런 박고 재밌게...
-
16년째 동결이었어서 할 말은 없다… 하하
-
쪽지 주세요
-
세개 다합해서 4천원 판매..
-
이거 떨어질 수 없겠죠?65명 뽑는 관데..
-
서울대 가고 싶엇어 15
용기내서 투과목 햇더라면 망햇겟지 응..
-
https://sdij.vercel.app/ 아주,인하 입니다
-
기시감 김종익 11
메가스터디 김종익T 념강 교재없이 노트필기하면서 듣고있는데 기출문제집은 현돌...
-
친구가 없어요 친해집시다...
-
차라리그만들어와내가잘못했어
-
점공률 27% 1
38명의 어둠의 표본은 진학사 점공도 안들어오려나 ㅋㅋㅋㅋ
-
현우진김범준 3
올해 고3이고, 고2 10모 92점 수능 84점정도인데 수1,수2 뉴분감+미적 스블 조합 어떤가요?
-
냥대 미자공 3
여기 정시 최초합도 장학받고 가나여 진학사 모의지원&점공 기준으로 좀 많이 앞쪽이라...
-
대학을 정성평가로 들어오긴 했는데 그냥 사실 정시백퍼로 3년 동안 정시공부하는 것도...
-
장학금 있나요? 홈페이지엔 따로 명시되어있지 않던디
-
암 비지 이러고 왓음
-
진학사 111 0
내년에 또 할 거라 걍 질렀는데 붙으면 절해야겠더
-
내년 3만명 되려나?
-
이거 새건데 재수안하게되서 파는데 원래이만원 넘게주고샀는데 만원으로 드릴게요..
-
일단 나부터
-
동국대야잘부탁해 0
잘해보자
-
점공률 38퍼
-
수능 지문이랑은 차원이 다르다 완전 우와
-
시립대 컴퍼스 예쁨 특히 그 벽돌건물있는 뒤쪽
-
만원에 파는데 급해요...교재주문때매 만원이 부족한ㄷ....
-
왤케 헷갈리지
-
이거 윗표본 더 들어올 수도 있는건가요? 저정도면 발뻗잠해도 되겠지싶기도 하고.....
486..