I'm trying to understand this copy constructor problem. The question I have pertains to the destructor after the program exits. It seems the variable char* title is not destructed and I think this maybe wrong, thanks
Another question is why the assignment operator isn't called when the object x is equal to x2. I'm using g++ with codeblocks.
#include <iostream>
using namespace std;  
class myClass
{
    private:
        int x;
        int *p;
        char* title;
    public:
        myClass(int tx, int* temp, char* newtitle)
        {
            x = tx;
            cout << "int constructor called with value x = " << x << endl;
            p = new int;
            p = temp;
            title = new char [strlen(newtitle)+1];
            strcpy(title, newtitle);
        }
        myClass(const myClass& mc)
        {
            cout << "copy constructor called with value = " << mc.x << endl;
            x = mc.x;
            p = new int;
            *p = *mc.p;
            title = new char [strlen(mc.title)+1];
            strcpy(title, mc.title);
        }
        myClass & operator = (const myClass & that)
        {
            cout << "assignment called" << endl;
            if(this != &that)
            {
                x = that.x;
            }
            return *this;
        }
        ~myClass()
        {
            if (p)
            {
                cout<<"deleting p"<<endl;
                delete p;
            }
            else if(title)
            {
                cout<<"deleting title"<<endl;
                delete[] title;
            }
        }
};
int main()
{
    int pointee = 10;
    int* p = &pointee;
    myClass x(3,p,"hello");
    //myClass y = myClass(3,p);
    myClass x2 = x;
    return 0;
}
 
     
     
     
    