# 배열클래스 : 배열의 역할을 하는 클래스
배열보다 나은 배열 클래스
배열 클래스의 예
배열 클래스의 안전성 확보
const 함수를 이용한 오버로딩의 활용
문제 발생 : ShowAllData(arr); 에서 문제 발생
#include <iostream>
#include <cstdlib>
using namespace std;
class BoundCheckIntArray
{
private:
int * arr;
int arrlen;
BoundCheckIntArray(const BoundCheckIntArray& arr) { }
BoundCheckIntArray& operator=(const BoundCheckIntArray& arr) { }
public:
BoundCheckIntArray(int len) :arrlen(len)
{
arr=new int[len];
}
int& operator[] (int idx)
{
if(idx<0 || idx>=arrlen)
{
cout<<"Array index out of bound exception"<<endl;
exit(1);
}
return arr[idx];
}
int GetArrLen() const
{
return arrlen;
}
~BoundCheckIntArray()
{
delete []arr;
}
};
void ShowAllData(const BoundCheckIntArray& ref)
{
int len=ref.GetArrLen();
for(int idx=0; idx<len; idx++)
cout<<ref[idx]<<endl;
}
int main(void)
{
BoundCheckIntArray arr(5);
for(int i=0; i<5; i++)
arr[i]=(i+1)*11;
ShowAllData(arr);
return 0;
}
객체의 저장을 위한 배열 클래스 1 [ 객체를 저장하는 방식 ]
StablePointObjArray.cpp
0.00MB
객체의 저장을 위한 배열 클래스 2 [ 객체주소를 저장하는 방식 ]
'열혈강의c++' 카테고리의 다른 글
[ 열혈C++ ] Chapter 11-3. 그 이외의 연산자 오버로딩 (0) | 2022.07.21 |
---|---|
[ 열혈C++ ] Chapter 11장 연습문제 (0) | 2022.07.21 |
[ 열혈C++ ] Chapter 11-1. 반드시 해야 하는 대입 연산자의 오버로딩 (0) | 2022.07.21 |
[ 열혈C++ ] Chapter 10-4. cout, cin 그리고 endl의 정체 (0) | 2022.07.21 |
[ 열혈C++ ] Chapter 10-3. 교환법칙 문제의 해결 (0) | 2022.07.21 |