Do not forget each part of the object when copying C ++. Do not forget to copy the object.
Ensure two points: 1. copy all member variables. 2. Call the copy function of all base classes.
class Customer{public:explicit Customer(const tstring _name,const tstring _lastTransaction):m_sName(_name), m_sLastTransaction(_lastTransaction){OutputDebugString(_T("Customer construct \n"));}virtual ~Customer(){OutputDebugString(_T("Customer deconstruct \n"));}Customer(const Customer& customer) : m_sName(customer.m_sName){OutputDebugString(_T("Customer copy construct \n"));}Customer& operator=(const Customer& customer){m_sName = customer.m_sName;OutputDebugString(_T("Customer operater \n"));return *this;}private:tstring m_sName;tstring m_sLastTransaction;};class PriorityCustomer: public Customer{public:explicit PriorityCustomer(const tstring name,const tstring lastTime,int nPriority):m_nPriority(nPriority), Customer(name, lastTime){OutputDebugString(_T("PriorityCustomer construct \n"));}PriorityCustomer(const PriorityCustomer& rhs) :m_nPriority(rhs.m_nPriority),Customer(rhs){OutputDebugString(_T("PriorityCustomer copy construct\n"));}PriorityCustomer& operator=(const PriorityCustomer rhs){OutputDebugString(_T("PriorityCustomer operater \n"));m_nPriority = rhs.m_nPriority;Customer::operator=(rhs);return *this;}virtual ~PriorityCustomer(){OutputDebugString(_T("PriorityCustomer deconstruct \n"));}private:int m_nPriority;};