#include<iostream>
#include<cstring>
using namespace std;
template <class T,int len>
class SimpleArray
{
private:
 T arr[len];
public:
 T& operator[](int idx) { return arr[idx]; }
 SimpleArray& operator=(const SimpleArray &ref) <- 여기서 SimpleArray& 대신 T& 를써도 되는 이유가 뭐죠?
 {
  for(int i=0;i<len;i++)
  {
   arr[i]=ref.arr[i];
  }
  return *this;
 }
};
int main()
{
 SimpleArray<int,5> obj1;
 SimpleArray<int,5> obj2;
 for(int i=0;i<5;i++)
 {
  obj1[i]=i*10;
 }
 SimpleArray<int,5> obj3;
 obj3.operator=(obj2.operator=(obj1));
 for(int i=0;i<5;i++)
 {
  cout<<obj3[i]<<endl;
 }
 return 0;
}

배열은 심플어레이의 멤버변수 이기때문에 ref의 형은 SimpleArray&가 되는게 맞는것같은데

T& operator=(const T& ref) 로 선언해도 문제가 생기지 않는 이유가 뭘까요