Creative Code

safeArray(배열 크기) 본문

C++ Programming

safeArray(배열 크기)

빛하루 2023. 9. 6. 13:56

※main.cpp파일

#include <iostream>

#include "array.h"

#include "safeArray.h"



int main() {



	int nums[] = {1,2,3,4,5};

	//Array arr1(nums,5);

	//arr1[arr1.size()] = 6;

	

	SafeArray arr1(nums,5);

	arr1[arr1.size()] = 6;

	return 0;

}

※safeArray.h파일

#ifndef SAFEARRAY_H

#define SAFEARRAY_H

#include "array.h"



class SafeArray : public Array { 

// public이면 array클래스의 private,public멤버들이 safeArray클래스의 public으로 들어간다.

// private이면 array클래스의 private,pblic멤버들이 safeArray클래스의 private으로 들어간다.



private:

public:

	explicit SafeArray(int size = Array::getDefaultSize());

	SafeArray(const int *pArr, int size);

	~SafeArray();

	SafeArray(const SafeArray& rhs);

	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() {



}



SafeArray& SafeArray::operator=(const SafeArray& rhs)

{

	this->Array::operator=((Array)rhs);

	return *this;

}



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);

}