컴공 일기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를 선물하세요.
-
경제솔직히진짜개간지남 22
친구들이 내 모의고사 시험지 보면서 멋져.,하악하악 하는걸 볼때마다 경제뽕이...
-
정법 재밌어 3
으흐흐
-
스텝 2부터 숨이 턱턱 조여오면 ㅈ댄 건가요?
-
모든 탐구 중에 1
내가 정상적으로 할 수 있는 과목이 화1 경제 사문 화2인데 화1 화2 하기엔 미적분을 넘 못함
-
진짜 바보 같은 질문이긴 한데요...ㅠㅠㅠ 이 풀이에 대해서 조금 더 자세하게...
-
원래 과탐 안 맞는데 억지 과탐 하던 사람이 사탐 가서 본인이랑 맞는 과목 찾으면...
-
ㅠㅠ
-
[속보] 야5당, 오후 2시 최상목 권한대행 탄핵소추안 발의 93
[속보] 야5당, 오늘 오후 최상목 권한대행 탄핵소추안 발의
-
2026학년도 해군사관학교 모집요강 : 네이버 블로그
-
인강쌤이 중요한 문제만 모아둔건가여?
-
안녕하세요 오르비 디렉터입니다. '오르비에서 판매하는 과탐2 자료를 알아보자'...
-
기억이 안남요...
-
사문은 확정인데 나머지 1개는 뭘로 하는 게 좋을지 고민이 돼서 여쭤봅니다. 사탐은...
-
과탐2개 하느라 ㅈㄴ힘들긴 했음..사탐이 훨 편한가
-
현우진 시발점 들으려 했는데 2023꺼 들어도 괜찮나여? 애매하면 차라리 정병호...
-
현역인데 N제까지 푸는건 ㄹㅇ 어케하는거임 학교다니면서 과탐 숙제, 병호햄...
-
아이폰도 2
지하철 승하차알림 되면 좋겠다 버스 자주 까먹고 못 내려서 자주 쓰는데
-
듣다 지쳐버리거나 질리는 경우가 99%...
-
5년은 쓸거 13인치 살걸..
-
고삼 수능 준비하는데 유형문제집 안풀어도 되나요? 10
고삼 수능 준비하는데 김기현 파데 킥오프하고 유형 문제집(쎈 등) 안풀고 바로...
-
관심 좀 19
관심 고픔
-
a<b일때 루트[a(a+b)]를 작도하시오 너무 뻔하다 싶은건 제가 원하는 풀이가...
-
흐음 2
흐음흐음흐으으으으음흠흠흐으으으으으으으으으으으으음
-
작수 국어5 떴는데 국어 공부 어케해야할지 막막함…올해 3등급은 맞아야하는데 모고...
-
[속보] ‘尹 탄핵’ 찬성 58% vs 반대 36%[한국갤럽] 0
윤석열 대통령 탄핵 찬성이 58%, 반대가 36%라는 여론조사 결과가 21일...
-
오후에 40문제 더풀면 소화기끝
-
하 허리 ㅈㄴ 아프네
-
씨발비갤개븅신새끼들 12
니네가죽였어
-
연락주세요
-
이제 음운론이당 2
오랜만이네 언매 2회독 꼼꼼히 하니깐 선지판단이 바로바로 돼서 너무 재미씀
-
독서실 의자 개구리네..개굴
-
편의점 가서 닭슴살이라도 사먹어야할까요....
-
최저 과탐 필수 2
최저가 3합에 탐구 1개 반영인데 탐구 과탐 필수라면 1. 탐구 반영 안되게...
-
시끄럽더니 그거였구나
-
후반까지 안지치고 가능할까요? 지금 학교 과는 좋은데 전문대라서 너무 짜쳐요...
-
언매 3개월 했는데도 30분 걸리면 화작런이 맞음? 4
기출 교사경 수특까지 다 풀었음 근데도 너무 어려움 아직도 작수 화작 13분컷으로...
-
눈 마주쳐서 인사하니까 맛있어요? 했는데 이거 나 출튀한거 알고 한말일까 결석처리하려나 샹
-
고3 중간고사 공부법 고3을 맞이한 여러분, 안녕하세요. 올해 수험생이라는 생각에...
-
나무나무
-
두오링고 700일 17
갈채하라
-
고2 중간고사 공부법 고등학교 2학년을 맞이한 여러분, '내가 벌써...
-
고1 중간고사 공부법 중학교를 졸업하고, 고등학교에 입학한 여러분. 새 출발을...
-
잠거의못잤어 3
으악
-
대형학원 조교하면서 자기 커리 짜고 교재 만들고 하는사람 몇명 봤는데 이런사람들은...
-
실제로는 한번 잘때마다 몇번씩 꿈을 꾼다고함 그러니까 꿈을 꿔도 기억을 못하면 잘때...
-
22학번이라 강기본 강기분 새기분 정도만 아는 데 요새 많이 듣는 커리는 어떤 게...
-
화작 0틀 87 확통 2틀 80 한지 34 세지 47인데 몇등급예상하시나요??
-
8시 46분에 들어갔는데 이제 깨어남 아무감각이 없더라 30정도 잔듯 시간ㅈㄴ잘가는군..
-
기출 후 N제 1
수학 기출 4개년을 풀이도 다 외울정도로 봤는데, 첫n제로 드릴 ㄱㅊ을까요? 이해원...
-
누가이길까
486..