[C++ 소스] 동적 배열 클래스 (인덱스 연산자 중복 정의)
//DCArray
#pragma once
class DCArray
{
int *base;
int bcapacity;
int usage;
public:
DCArray(int usage=0,int data=0);
DCArray(const DCArray &src);//복사 생성자
~DCArray();//소멸자
void Copy(const DCArray &src);//src 개체를 복사
DCArray &operator=(const DCArray &src);//= 연산자 중복 정의
int &operator[](int index);//인덱스 연산자 중복 정의
bool IsAvailIndex(int index)const;
private:
void Init();
};
//DCArray.h
#include "DCArray.h"
DCArray::DCArray(int usage,int data)
{
Init();
if(usage)
{
base = new int[usage]; //bcapacity개수의 int 형식을 동적으로 생성
bcapacity = usage;
}
for( ;this->usage<usage; this->usage++) //data를 usage만큼 보관
{
base[this->usage] = data;
}
}
DCArray::DCArray(const DCArray &src)
{
Init();
Copy(src);
}
DCArray::~DCArray()
{
if(base)
{
delete[] base;
}
}
void DCArray::Copy(const DCArray &src)//src 개체를 복사
{
bcapacity = src.bcapacity;
if(base)
{
delete[] base;
}
base = new int[bcapacity];
usage = src.usage;
for(int i = 0; i<usage;i++)
{
base[i] = src.base[i];
}
}
DCArray &DCArray::operator=(const DCArray &src)//= 연산자 중복 정의
{
Copy(src);
return (*this);
}
int &DCArray::operator[](int index)
{
if(IsAvailIndex(index))
{
return base[index];
}
throw "유효하지 않은 인덱스를 사용하!!!";
}
bool DCArray::IsAvailIndex(int index)const
{
return (index>=0)&&(index<usage);
}
void DCArray::Init()
{
base = 0;
bcapacity = usage = 0;
}
//인덱스 연산자 중복 정의
//Program.cpp
#include "DCArray.h"
#include <iostream>
using namespace std;
int main()
{
DCArray dcarr(10);//저장소의 크기가 10인 동적 배열 선언
dcarr[3] = 10;
dcarr[9] = 9;
for(int i = 0; i<10;i++)
{
cout<<dcarr[i]<<" ";
}
cout<<endl;
return 0;
}
실행 결과
0 0 0 10 0 0 0 0 0 0 9
본문
'C++ > 디딤돌 C++' 카테고리의 다른 글
[C++ 소스] iostream 클래스 내부 (0) | 2016.12.16 |
---|---|
[C++ 소스] 성적 클래스 (묵시적 형 변환 연산자 중복 정의) (0) | 2016.12.15 |
[C++ 소스] 동적 배열 클래스 (대입 연산자 중복 정의) (0) | 2016.12.15 |
[C++ 소스] 성적 클래스 (증감 연산자 중복 정의) (0) | 2016.12.15 |
[C++ 소스] 학생 클래스 (== 연산자 중복정의, 클래스 내부에 정의) (0) | 2016.12.14 |