#ifndef __ACCOUNT_ARRAY_H__
#define __ACCOUNT_ARRAY_H__
#include "Account.h"
typedef Account * ACCOUNT_PTR;
class BoundCheckPointPtrArray
{
private:
ACCOUNT_PTR * accArr;
int arrlen;
BoundCheckPointPtrArray(const BoundCheckPointPtrArray& arr) { }
BoundCheckPointPtrArray& operator=(const BoundCheckPointPtrArray& arr) { }
public:
BoundCheckPointPtrArray(int len=100);// len을기본으로 100개 먹임
ACCOUNT_PTR& operator[](int idx);
ACCOUNT_PTR operator[](int idx) const ;
int GetArrLen() const;
~BoundCheckPointPtrArray();
};
#endif // !__ACCOUNT_ARRAY_H__
BoundCheckPointPtrArray::BoundCheckPointPtrArray(int len):arrlen(len) //100개 만들고
{
accArr = new ACCOUNT_PTR[len];
}
ACCOUNT_PTR& BoundCheckPointPtrArray::operator[](int idx) // 100개 초과되면 밑에 if문 출력
{
if (idx<0 || idx >=arrlen)
{
cout << "Array index out of bound exception" << endl;
exit(1);
}
return accArr[idx];
}
ACCOUNT_PTR BoundCheckPointPtrArray:: operator[](int idx) const
{
if (idx<0 || idx >= arrlen)
{
cout << "Array index out of bound exception" << endl;
exit(1);
}
return accArr[idx];
}
int BoundCheckPointPtrArray::GetArrLen() const
{
return arrlen;
}
BoundCheckPointPtrArray::~BoundCheckPointPtrArray()
{
delete[]accArr;
}
경계검사 관련된 코드 책에꺼 참고해서 짰는데 VS2015 돌리는데 어떨때는 len이 100으로 먹히다가 다시 돌리면 len이 0으로 먹혀서 if문 실행됨 그래서 걍 arrlen을 100으로 초기화해놓고 하는데 왜 왔다갔다하는거임?
디버거 돌려봄? - return 0;
C++면 new delete 쓰지 마셈 - return 0;
돌려봤는데도 모르것음 차례대로 잘가다가 어떨댄 100 어떨떈 0 그래서 걍 100으로 상수고정시킴 근데 왜 new delete 쓰면안됨?
c++이니 뉴 딜리트 쓰는거져;
ㄴ 아니 바뀐 가이드라인 부터는 쓰지 말라고 하는데 대신 스마트포인터 씀 - return 0;
std::unique_ptr - return 0;
new delete 안 쓰면 동적할당 어케 함? - dc App