4 Deep assignment

In the example in section 3, we should also define a deep-copy assignment operator:

 
1class Y 
2{ 
3    char *pMessage; // pointer to a message 
4  protected
5    void clone(const Y &y); 
6  public
7    Y(void{ pMessage = 0; } 
8    Y(const Y &y); 
9    ˜Y(void{ if (pMessage) delete pMessage; } 
10    Y operator = (const Y &y); 
11    void setMessage(const char *); 
12    const char *getMessage(voidconst
13}
14 
15Y Y::operator = (const Y &y) 
16{ 
17  clone(y); 
18  return y; 
19}