I am relatively new to classes and was introduced to copy constructors and overloading last week. I am supposed to overload the = operator and use it to assign multiple variables using the class name. 
For some reason, running the program causes a popup saying
program.cpp has stopped responding.
I am positive there are minor/major things that I am missing due to me being a rookie with objects in C++.
Any advice is very much appreciated!
#include<iostream>
#include<string>
using namespace std;
class Employee
{
private:
    char *name;
    string ID;
    double salary;
public:
    Employee() {}
    Employee(char *name, string eid, double salary) {}
    Employee(const Employee &obj)
    {
        name = new char;
        ID = obj.ID;
        salary = obj.salary;
    }
    ~Employee() {}
    void setName(char *n)
    {
        name = n;
    }
    void setID(string i)
    {
        ID = i;
    }
    void setSalary(double s)
    {
        salary = s;
    }
    char getName()
    {
        return *name;
    }
    string getID()
    {
        return ID;
    }
    double getSalary()
    {
        return salary;
    }
    Employee operator = (Employee &right)
    {
        delete[] name;
        ID = right.ID;
        salary = right.salary;
        return *this;
    }
};
int main()
{
    Employee e1("John", "e222", 60000), e2(e1), e3, e4;
    e3 = e4 = e2;
    e2.setName("Michael");
    e2.setSalary(75000);
    e3.setName("Aaron");
    e3.setSalary(63000);
    e4.setName("Peter");
    cout << "\nName: " << e1.getName() << "\nID: " << e1.getID() <<     "\nSalary: " << e1.getSalary() << endl;
    cout << "\nName: " << e2.getName() << "\nID: " << e2.getID() <<     "\nSalary: " << e2.getSalary() << endl;
    cout << "\nName: " << e3.getName() << "\nID: " << e3.getID() <<     "\nSalary: " << e3.getSalary() << endl;
    cout << "\nName: " << e4.getName() << "\nID: " << e4.getID() <<     "\nSalary: " << e4.getSalary() << endl;
    return 0;
}
 
     
     
    