공부 중인데 예시로 든 소스가 왜 에러가 나는지 이해를 못하겠어ㅜㅜ

c를 리턴하는 과정에서 에러가 뜨는데 이게 왜 에러가 나는지도 모르겠고 어떻게 수정해야하는지도 감이 안온다...ㅜㅜ


#include<iostream>
using namespace std;
class c
{
    public:
    c(int n) : n(n)
    {
        p = new int[n];
    };
    c(const c &o) : n(o.n)
    {
        p = new int[n];
        for(int i=0; i<n; i++) p[i] = o.p[i];
    }
    ~c(void)
    {
        if (p!=NULL) delete[] p;
    };
    private:
        int n,*p;
};
c f(void)
{
    c c(5);
    return c;
}
void main(void)
{
    c c(5);
    c = f();
}