确保两点: 1 复制所有的成员变量 2 调用所有基类的copy函数
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;
};