C++
SafeArray
호타리
2023. 9. 7. 11:42
<main.cpp>
#include <iostream>
#include "safeArray.h"
#include "array.h"
int main()
{
SafeArray arr1;
SafeArray arr2(100);
int nums[] = {1,2,3,4,5};
SafeArray arr3(nums,5);
const SafeArray arr4 = arr3;
arr1 = arr4;
if (arr1 == arr4)
{
std::cout << "arr1 and arr4 are equal" << std::endl;
}
else
{
std::cout << "arr1 and arr4 are not equal" << std::endl;
}
arr1[0] = arr1[4];
for (int i = 0; i<arr1.size(); ++i)
{
std::cout << arr1[i] << " "; //arr1.operator[](i)
}
std::cout << std::endl;
return 0;
}
<safeArray.h>
#ifndef SAFEARRAY_H
#define SAFEARRAY_H
#include "array.h"
class SafeArray : public Array {
private:
public:
explicit SafeArray(int size = Array::getDefaultSize());
SafeArray(const int *pArr, int size);
//SafeArray(const SafeArray& rhs);
//~SafeArray();
//SafeArray& operator=(const SafeArray& rhs);
bool operator==(const SafeArray& rhs) const;
int& operator[](int index);
const int& operator[](int index) const;
};
#endif
<safeArray.cpp>
#include "safeArray.h"
#include <cassert>
SafeArray::SafeArray(int size)
: Array(size)
{
}
SafeArray::SafeArray(const int *pArr, int size)
: Array(pArr, size)
{
}
/*
SafeArray::SafeArray(const SafeArray& rhs)
: Array( (Array)rhs) // slicing
{
}
SafeArray::~SafeArray()
{
// automatically Array::~Array() is called
}
SafeArray& SafeArray::operator=(const SafeArray& rhs)
{
this->Array::operator=( (Array)rhs);
return *this;
}
*/
bool SafeArray::operator==(const SafeArray& rhs) const
{
return this->Array::operator==( (Array)rhs);
}
int& SafeArray::operator[](int index)
{
assert(index >= 0 && index < this->Array::size());
return this->Array::operator[](index);
}
const int& SafeArray::operator[](int index) const
{
assert(index >= 0 && index < this->Array::size());
return this->Array::operator[](index);
}
<compile 결과>
