#include <iostream>#include<cassert>using namespace std;#include<initializer_list> class IntArray{ unsigned mLength = 0; int *mData = nullptr;public: IntArray(unsigned length) : mLength(length) { mData = new int[length]; } ~IntArray() { delete[]this->mData; } IntArray(const std::initializer_list<int> &list): IntArray(list.size()){ int count = 0; for ( auto &e : list ) { mData[count] = e; ++count; } } friend ostream &operator<<(ostream &os, IntArray &arr) { for ( unsigned i = 0; i < arr.mLength; ++i ) { os << arr.mData[i] << " "; } os << endl; return os; } //=operator IntArray& operator=(const std::initializer_list<int> &array) { cout << "assignment operator" << endl; delete[] mData; mLength = array.size(); if(mData!=nullptr ) { mData = new int[mLength+1];//이 부분에서 mData = new int[mLength];로 코딩하면 버퍼 오버런이 뜹는데 오류 메세지를 보면이렇게 나옵니다 0에서 0사이라는 것이 뭔가요?? int i {}; for ( auto &e : array ) { mData[i++] = e; } } else { mData = nullptr; } return *this; }}; int main(){ IntArray intArray = {11,12,13,14,15,16,17,18,19,20}; intArray = {1,2,3,4,5,6,7,8,9,10}; cout << intArray << endl;}